【问题标题】:Using Class Types in Static Methods在静态方法中使用类类型
【发布时间】:2021-03-17 05:35:09
【问题描述】:

我正在尝试创建一个基础模型,该模型将由具有描述其属性的接口的特定模型类扩展。

在基础模型类中应该有一个静态工厂()函数从静态上下文中实例化模型并返回具有特定模型+基础模型+指定接口的类型。

问题是我在静态函数U extends Model<T> 中遇到错误说T:静态成员不能引用类类型参数。

接口事件

interface Event {
  id: number;
}

基础事件模型

export class Model<T> {

  public static factory<U extends Model<T>>(this: { new(): U }, data: any): U {
    return Object.assign(new this(), data);
  }
}

事件模型

export class EventModel extends Model&lt;Event&gt; {}

目标是返回类型为EventModel,包含Event的所有属性。

【问题讨论】:

    标签: typescript typescript-generics


    【解决方案1】:

    您不能使用T 参数,因为它在静态方法中没有任何意义,请像这样更改您的代码:

    export class Model<T> {
      public static factor<U>(this: { new(): Model<U> }, data: any): Model<U> {
        return Object.assign(new this(), data)
      }
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-04-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-02-10
      • 1970-01-01
      相关资源
      最近更新 更多