首页 > 解决方案 > 如何对类或接口的子项进行类型检查?

问题描述

昨天我问了一个可能有点过于宽泛的问题,所以这是我试图分解它的尝试。在此处链接到该问题:如何定义用于抽象服务的抽象模型?

Model我定义了一个带有私有属性id、构造函数和静态方法 create的抽象类。然后,我定义了一个接口ResponseBody,这个Model类的实现将扩展。JSON 数据将以 的形式从服务器返回,DerivedClass.ResponseBody客户端将传递给它create以形成一个新的派生对象Model。下面是我必须开始的。

export abstract class Model {
  get id() {
    return this._id;
  }

  constructor(private _id: number) {}

  static create<T extends Model>(body: T.ResponseBody): T {
    console.error(
      "Static method create() must be defined by class implementing Model."
    );

    return undefined;
  }
}

export module Model {
  export interface ResponseBody {
    type?: "response-body";
    id: number;
  }
}

我的问题是body定义create. 我收到一个错误:'T' only refers to a type, but is being used as a namespace here.我想确保该类型强制将正确的值传递给 create,它始终包含一个id,但还必须包含派生类中定义的任何内容。我该如何做到这一点?

标签: typescriptinheritance

解决方案


推荐阅读