Typescript类方法,约束到类属性
鉴于以下类别:Typescript类方法,约束到类属性,typescript,Typescript,鉴于以下类别: class MyOb { foo: string; setFields(props) { Object.assign(this, props); } } 是否可以将setFields的props参数约束为MyObj的属性?以便: new MyOb().setFields({ foo: 'bar' }) // compiles new MyOb().setFields({ x: 'bar' }) // fails, property x is no
class MyOb {
foo: string;
setFields(props) {
Object.assign(this, props);
}
}
是否可以将setFields
的props
参数约束为MyObj
的属性?以便:
new MyOb().setFields({ foo: 'bar' }) // compiles
new MyOb().setFields({ x: 'bar' }) // fails, property x is not a part of MyOb
您正在查找
keyof
和映射类型:
setFields(props: { [TKey in keyof MyOb]?: MyOb[TKey] } ) {
请注意?
,因为您希望每个属性都是可选的
我注意到,这只允许您设置类的公共属性和方法,而不允许设置私有或受保护的属性和方法。在大多数情况下,这很好(甚至更好),但这是需要注意的。