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] } ) {
请注意
,因为您希望每个属性都是可选的


我注意到,这只允许您设置类的公共属性和方法,而不允许设置私有或受保护的属性和方法。在大多数情况下,这很好(甚至更好),但这是需要注意的。