【发布时间】:2018-11-03 23:34:27
【问题描述】:
是否可以在类型签名中引用当前类类型?这样我就可以做这样的事情:
export class Component{
constructor(config?: { [field in keyof self]: any }) {
Object.assign(this, config)
}
}
这个想法是传递一个由当前类键组成的配置对象。
我可以使用接口,但我需要输入相同部分的代码(在接口和实现类中)
另一种方法是使用泛型。像这样的:
export class Component<T>{
init(config?: { [field in keyof T]?: any }) {
Object.assign(this, config)
}
}
class TestComponent extends Component<TestComponent>{
foo: number
}
const component = new TestComponent().init({ foo: 11 })
但是拥有像class TestComponent extends Component<TestComponent> 这样的代码让我寻找更好的方法......
【问题讨论】:
-
不可以写‘keyof Component’吗?还是我误解了你的问题?
-
可以,但不能在构造函数中,可以使用
this作为类型。 github.com/Microsoft/TypeScript/pull/4910 -
@TitianCernicova-Dragomir,哇,酷。这应该是一个答案。
this不在构造函数中对我来说完全没问题。在init函数的某个地方做这样的事情更好,因为构造函数在默认值设置之前运行。 -
@SET 刚刚将其添加为答案 :)
标签: typescript