给定的
abstract class A {
constructor() {
this.initialize()
}
initialize<T extends {
[t in keyof this]?: boolean
}>(todos?: T) {
// Do something
}
}
class B extends A {
initialize() {
super.initialize({ // <-- it will throw error starting on this open bracket
test: false
})
}
test() {
return 'test'
}
}
为什么上面的代码抛出错误,声明{ test: false }
不能赋值给{[t in keyof this]?: boolean}
?虽然很明显是这样。
‘'test’是B的关键字之一,对吧?keyof this
会引用B的密钥,对吗?
发布于 2019-04-28 10:09:57
@JGoodgive那么我如何才能真正引用当前类呢?因为我需要它来指向当前类,以便以后在类的后代中使用。我可以通过以下方式来实现:
abstract class A<Model> {
constructor() {
this.initialize()
}
initialize<T extends {
[t in keyof Model]?: boolean
}>(todos?: T) {
// Do something
}
}
class B extends A<B> {
initialize() {
super.initialize({
test: true,
initialize: false,
})
}
test() {
return 'test'
}
}
但是把B传给B似乎很愚蠢,你不这样认为吗?
https://stackoverflow.com/questions/55883031
复制相似问题