我有以下代码:
type callbackType = <T>(d: T) => void;
const callbackTest = <T>(val: T, callback: callbackType) => {
callback(val);
};
callbackTest("Hey", isAString => isAString)
在这里,我希望Typescript推断出isAString
具有string
类型,但它没有。
如果我像这样inlinecallbackType
:
const callbackTest = <T>(val: T, callback: (d: T) => void) => {
callback(val);
};
callbackTest("Hey", isAString => isAString)
Typescript可以推断出isAString
的类型为string
。
我尝试在callbackType
(callback: callbackType<T>
)后面添加<T>
,但这似乎不是有效的Typescript,并给出以下错误:Type 'callbackType' is not generic.
在我的实际代码中,callbackType
是一个更复杂的函数,我使用了多次,因此内联它不是理想的。
有什么办法可以帮助Typescript找出isAString
的类型吗?
将泛型移到函数中的类型:
type callbackType<T> = (d: T) => void;
然后你可以把T
传递给你最初尝试的类型:
const callbackTest = <T>(val: T, callback: callbackType<T>) => {
callback(val);
};
callbackTest("Hey", isAString => isAString);