class A {
get projections(): { [id: string]: this } { ... }
}
class B extends A {}
new B().projections // should be { [id: string]: B }
但是,鍵入腳本不允許在此位置使用this
類型。有什麼方法可以表達我想要的嗎?或者任何它不起作用的原因?Typescript:輸入對象類型
class A {
get projections(): { [id: string]: this } { ... }
}
class B extends A {}
new B().projections // should be { [id: string]: B }
但是,鍵入腳本不允許在此位置使用this
類型。有什麼方法可以表達我想要的嗎?或者任何它不起作用的原因?Typescript:輸入對象類型
this
不能以這種方式使用。讓我建議一個代碼來實現你想要的。
class A {
get projections() {
// ...
let result = {}; // <-- your return object
return (<T>(obj: T): { [id: string]: T } => result)(this);
}
}
class B extends A {}
new B().projections // => { [id: string]: B }
我不想使用匿名函數,但這是我發現得到您的結果的方式。
您可以在A
創建一個私有的幫助功能,使代碼更易讀:
class A {
private applyResult<T>(obj: T, result: { [id: string]: T }) {
return result;
}
get projections() {
// ...
let result = {}; // <-- your return object
return this.applyResult(this, result);
}
}
class B extends A {}
new B().projections // => { [id: string]: B }
我希望這有助於以某種方式。
'this'是指對象的特定實例,而不是類本身。這就是爲什麼它不起作用。 –