小编kla*_*son的帖子

Typescript 泛型:引用类而不是实例

我遇到了一种情况,我想在一组接口中使用泛型类型。我的公共接口接收通用类型并将其传递给非导出的私有接口。在我的公共接口中,我想使用泛型类型T,但我希望它引用的实例T。我想让它说它是T,这个类,可以生成 的实例T

尝试这个,我得到一个错误:

interface Car<T> {
  unit: T;
  progress: number;
}

export interface CarFactory<T> {
  cars: Car<T>[];
  // Type error: 'T' only refers to a type, but is being used as a value here.  TS2693
  blueprint: typeof T;
}
Run Code Online (Sandbox Code Playgroud)

使用生成器函数是可行的。但随后我必须将其传递下去并暴露更多代码的内部结构,这是我想避免的。

interface CarFactory<T> {
  blueprint: (args: any) => T;
}
Run Code Online (Sandbox Code Playgroud)

我不能T直接使用,因为这会导致编译器认为它应该接收 的实例T,而不是类。这会触发TS2740错误。使用T = CarModelandT['constructor']作为blueprint类型有效,但前提是我像这样修补我的类:

class CarModel {
  public …
Run Code Online (Sandbox Code Playgroud)

generics typescript

5
推荐指数
1
解决办法
972
查看次数

标签 统计

generics ×1

typescript ×1