我得到一个类型A
的对象实例。如何在Typescript中使用getter函数扩展它?添加我做的功能
A.prototype.testFunction = function () {
if(this.something) {
return this.something;
}
return null;
}
我在index.d.ts
文件中扩展了类型,例如:
interface A {
testFunction (): SomeType|null;
}
但是如果我想作为一个getter函数出现而不仅仅是作为一个函数,我该如何添加呢?
我尝试查看Object.defineProperty()
但是Typescript本身似乎并不乐意使用那个,指的是以下代码中this
的错误实例:
Object.defineProperty(A.prototype, "testGet", {
get: function () {
if(this.something) { // <== this appears to not refer to type A
return this.something;
}
return null;
},
enumerable: false,
configurable: true
});
答案 0 :(得分:5)
Getters / setter可以简单地声明为interface:
中的属性interface A {
testGet: SomeType|null;
}
并在getter函数中指定type of this
parameter:
Object.defineProperty(A.prototype, "testGet", {
get (this: A) {
if(this.something) {
return this.something;
}
return null;
},
enumerable: false,
configurable: true
});