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)
-
資深大佬 : Vegetableclass 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 要改成在构造器中传入 -
資深大佬 : SilencerLclass Model {
setProps?<T>(props: T) {
Object.assign(this, props)
}
} -
主 資深大佬 : weijar结贴: 在构造器上目前是不可能实现的
https://github.com/microsoft/TypeScript/issues/40451 -
資深大佬 : meepo3927连续自问自答, 主学习能力超群