第一个参数的类型定义了第二个参数的类型,我不希望它是一个类型参数,而希望它是一个泛型函数类型,这样它就可以被推断出来,而不需要被传递
我喜欢输入以下函数:
const addT = (a, b) => a + b
- 可以是
string | number
b
应与typeof a
相同
可以想到一些变体,但是没有一个是从参数的类型推断出来的。
一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个一个x一个四个一个
示例的Playground链接
第一个参数的类型定义了第二个参数的类型,我不希望它是一个类型参数,而希望它是一个泛型函数类型,这样它就可以被推断出来,而不需要被传递
我喜欢输入以下函数:
const addT = (a, b) => a + b
string | number
b
应与typeof a
相同可以想到一些变体,但是没有一个是从参数的类型推断出来的。
一个一个一个一个一个x一个一个二个一个x一个一个三个一个x一个一个x一个四个一个
示例的Playground链接
1条答案
按热度按时间yhuiod9q1#
我以前也遇到过类似的问题。尝试用泛型做的问题是:
add<3>(3,3)
,然后3+3不是3,所以结果不再是T。add<3|'a'>(3, 'a')
时,number为真,但在本例中,结果是(强制后)字符串'3a'
,它也不是T我最接近解决这个问题的是:
Playground链接
这里的
any
只是让函数工作。TS将根据参数推断调用了哪个重载。据我所知,你只能使用前2个签名调用,使用其他任何签名调用它都应该出错。