如果我在Typescript中具有以下功能
function makeArray<T>(obj: T): T[] {
return [obj];
}
我可以轻松地使用typeof
来存储它的类型:
function makeArray<T>(obj: T): T[] {
return [obj];
}
type ArrayMaker = typeof makeArray; // <T>(obj: T) => T[]
超级派上用场-却失去了通用名:
function makeArray<T>(obj: T): T[] {
return [obj];
}
type NumberArrayMaker = typeof makeArray<number>;
// ⬆
// "ERROR: ';' expected."
这很有道理-函数在被调用之前不会存储任何通用的类型信息(此时,作用域仅限于该单个调用)。不过,我仍然希望能够存储代表函数的缩小版本的类型。
是否可以通过强制特定泛型的函数来创建类型?