具有通用功能的打字稿回调
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);
我有以下代码:
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);