在函数的“ typeof”中指定泛型

时间:2020-06-05 18:45:46

标签: typescript

如果我在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."

这很有道理-函数在被调用之前不会存储任何通用的类型信息(此时,作用域仅限于该单个调用)。不过,我仍然希望能够存储代表函数的缩小版本的类型。

是否可以通过强制特定泛型的函数来创建类型?

0 个答案:

没有答案