我在搜索"泛型参数推断未知"时发现了一些帖子和GitHub问题,但我的技能水平似乎还不够高,根本不能理解这个问题.
以下是我的代码(playground):
function createFun<T>(arg: (f: (id: T) => T) => T) {
// body of this doesn't matter
}
const fun1 = createFun((f) => f(1)); // T is inferred to be unknown
const fun2 = createFun((f) => f("")); // T is inferred to be unknown
const fun3 = createFun((f) => f(true)); // T is inferred to be unknown
// Question:
// can createFun be modified such that the above is inferred as
// * createFun<number>((f) => f(1));
// * createFun<string>((f) => f(""));
// * createFun<boolean>((f) => f(true));
// ?
是否有可能修改createFun
,从而正确地推断出通用参数T
?
我想知道,因为
createFun<string>((f) => f(1));
引发错误(理应如此),而
createFun<number>((f) => f(1));
没有(理应如此).
所以Typescript 显然有足够的信息来正确地推断T
个?