typescript - 在过滤和(希望)铸造时避免任何类型
问题描述
当我定义以下函数时:
export const filterAndCast = <T, U>(
items: T[],
predicate: Predicate<T>,
cast: (x: T) => U,
) => items
.reduce(
(p, c) => [
...p,
...(predicate(c) ? [cast(c)] : []),
],
[],
);
我希望已经U[]
回来了。但我反而得到any[]
.
我怎样才能解决这个问题?
解决方案
这个怎么样?
export const filterAndCast = <T, U>(
items: T[],
predicate: (c:T) => boolean,
cast: (x: T) => U,
) => items
.reduce(
(p, c) => [
...p,
...(predicate(c) ? [cast(c)] : []),
],
[],
);
const results = filterAndCast([1, 2, 3], x => x % 2 === 0, x => Number(x))
results.forEach(el=> console.log(typeof el));
推荐阅读
- php - 尝试将 laravel 8 应用程序部署到主机共享主机时出现 HTTP 500 响应和白屏
- python - 使用 Selenium 让 Tor 在 AWS EC2 上工作
- node.js - 使用 nodejs 全局监听按键
- java - java.lang.NullPointerException:指定为非空的参数为空
- python - 如何在 tkinter 中播放 MP4 视频
- android - 我有翻译 API,如何使用 API 本地化我的颤振应用程序
- airflow - 如何使用气流休息 api 停止运行 dag
- java - 查找数字的毕达哥拉斯三元组
- css - 悬停状态不在 svg 文本的字母之间保持 - React/CSS
- typescript - 打字稿哈希成员算术限制