带泛型函数的typescript回调



我有以下代码:

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);

相关内容

  • 没有找到相关文章

最新更新