Typescript 能否达成这个效果?

Typescript 能否达成这个效果?

資深大佬 : weijar 0

class Model {     setProps (props: any) { // 这里的 any 要改成限制类的属性       Object.assign(this, props)     } }  class User extends Model {     id!: string     name!: string }  const user = new User() user.setProps({ name: 'Jack', age: 100 }) // 这里 age 不是 User 的属性,能否有办法报错? 

大佬有話說 (8)

  • 資深大佬 : Vegetable

    class User extends Model {
    id!: string
    name!: string
    setProps(props: { name: string, id: string }) {
    super.setProps(props)
    }

    }

  • 資深大佬 : weijar

    算了,自己找到答案了
    seProps<T> (this: T, data: Partial<Exclude<T, ‘id’>>)

    ts 真是太 nb 了

  • 資深大佬 : weijar

    @Vegetable 你这个不通用啊

  • 資深大佬 : Vegetable

    @weijar 是挺牛逼…

  • 資深大佬 : weijar

    卧槽,有新问题了,这招在 constructor 不好使?怎么办?
    new User({ age: 100 }) // 如果 setProps 要改成在构造器中传入

  • 資深大佬 : SilencerL

    class Model {
    setProps?<T>(props: T) {
    Object.assign(this, props)
    }
    }

  • 資深大佬 : weijar

    结贴: 在构造器上目前是不可能实现的
    https://github.com/microsoft/TypeScript/issues/40451

  • 資深大佬 : meepo3927

    连续自问自答, 主学习能力超群

「点点赞赏,手留余香」

    还没有人赞赏,快来当第一个赞赏的人吧!
0 条回复 A 作者 M 管理员
    所有的伟大,都源于一个勇敢的开始!
欢迎您,新朋友,感谢参与互动!欢迎您 {{author}},您在本站有{{commentsCount}}条评论