具有通用功能的打字稿回调

typescript callback with generic function

我有以下代码:

type callbackType = <T>(d: T) => void;

const callbackTest = <T>(val: T, callback: callbackType) => {
    callback(val);
};

callbackTest("Hey", isAString => isAString)

在这里,我希望 Typescript 推断出 isAString 具有类型 string,但事实并非如此。

如果我像这样内联 callbackType

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