什么是Typescript原型?
问题描述:
在lib.d.ts我们可以发现下面的代码:什么是Typescript原型?
interface Error {
name: string;
message: string;
}
interface ErrorConstructor {
new (message?: string): Error;
(message?: string): Error;
prototype: Error;
}
declare var Error: ErrorConstructor;
什么是ErrorConstructor
的prototype
属性的意义是什么?
答
除了JavaScript构造函数的prototype
属性的正常特殊意义之外,TypeScript中的prototype
属性没有特别的意义。
在此代码中,ErrorConstructor
类型/接口的prototype
属性被设置为确保直接访问ErrorConstructor.prototype
的任何代码都将获得该属性的正确类型信息。
相反,ErrorConstructor
的new
签名定义了使用new
调用创建的对象的类型。构造函数的new
返回值和构造函数的prototype
名义上是相同的类型,但JavaScript允许构造函数返回不属于它们自己类型的值,因此区分是正确键入所有可能的JavaScript代码所必需的。
我可能是错的,但在我看来,'ErrorConstructor'接口并不是真正意义上的使用/引用。它似乎只是为了让我们可以围绕外部错误对象“脚手架”类型信息。有鉴于此,访问'ErrorConstructor.proptotype'的可能的实际原因是什么? –
好点。除了完全复制ECMAScript标准中定义的内容外('lib.d.ts'毕竟是自动生成的),具有'prototype'的类型可以帮助'Error'类的手动扩展。 –