typescript - 如何对类或接口的子项进行类型检查?
问题描述
昨天我问了一个可能有点过于宽泛的问题,所以这是我试图分解它的尝试。在此处链接到该问题:如何定义用于抽象服务的抽象模型?
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
,但还必须包含派生类中定义的任何内容。我该如何做到这一点?
解决方案
推荐阅读
- reactjs - 如何在反应原生平面列表中访问数组中的嵌套对象
- r - 以组内匹配的行元素为条件进行变异
- elasticsearch - 所有特定属性的 Elasticsearch 动态模板
- python - 对受 CloudFlare 保护的 API 的 Python 请求返回 403
- python - 我正在尝试交换列表中的两个元素,但是在第一次交换之后,它会不断被交换,因为它符合要交换的条件
- java - 如何使用@WebMvcTest 连接千分尺
- jquery - 使用带有ajax jquery的codeignter上传多个文件
- matplotlib - 如何在 Matplotlib 中获得固定高度(以像素为单位)、固定数据 x/y 纵横比并自动移除移除水平空白边距?
- jquery - 使用 jQuery 时获取 rails 对象 id 的问题
- asp.net - Angular 8 使用 ASP NET Core 3.1 Web Api 时出现 CORS 策略问题