gpt4 book ai didi

typescript - 不一致的输入 [...].map() 点自由或箭头功能

转载 作者:搜寻专家 更新时间:2023-10-30 21:10:44 25 4
gpt4 key购买 nike

看这个例子:

const strings = ['1', '2', 2];
const mapper = (s: string) => parseInt(s, 10);
const numbers1 = strings.map(mapper);
const numbers2 = strings.map(s => mapper(s));

在这个例子中,带有 numbers1 的行类型检查正常,它不应该因为 strings 的类型为 (string | number)[],而 mapper 只接受 string 参数。

但是,如果我在 numbers2 处使用 lambda,我会得到预期的错误,因为 s(string | number) 类型,它可以不会被传递到 mapper

这是有原因的,还是可能有一些“严格”的配置来获得预期的错误,或者这只是一个错误?

要运行该示例,请参阅:playground link

最佳答案

TypeScript github 上有类似的问题/提案(例如:https://github.com/Microsoft/TypeScript/issues/1394)。

目前你有 (s: string) => any 隐式转换为 (s: string | number) => any。并且任何泛型参数的 TypeScript 编译器都认为它可以转换为“更宽”的类型(协变)。但是对于函数参数,相反的事情应该起作用(逆变)。目前 TypeScript 不支持它。

关于typescript - 不一致的输入 [...].map() 点自由或箭头功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41058690/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com