首页 > 解决方案 > 在函数的“typeof”中指定泛型

问题描述

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

这是有道理的 - 函数在调用之前不会存储任何通用类型信息(此时它的范围仅限于该单个调用)。不过,我希望能够存储一种表示函数的缩小版本的类型。

是否可以从强制执行特定泛型的函数中创建类型?

标签: typescript

解决方案


推荐阅读