class A {
get projections(): { [id: string]: this } { ... }
}
class B extends A {}
new B().projections // should be { [id: string]: B }
但是,类型脚本不允许this
类型处于此位置。有没有办法表达我想要的东西?或者它不起作用的任何原因?
答案 0 :(得分:1)
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 }
我希望这会有所帮助。