跳至主要內容
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?

4563博客

全新的繁體中文 WordPress 網站
  • 首頁
  • Typescript 能否达成这个效果?
未分類
14 1 月 2021

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

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

文章導覽

上一篇文章
下一篇文章

AD

其他操作

  • 登入
  • 訂閱網站內容的資訊提供
  • 訂閱留言的資訊提供
  • WordPress.org 台灣繁體中文

51la

4563博客

全新的繁體中文 WordPress 網站
返回頂端
本站採用 WordPress 建置 | 佈景主題採用 GretaThemes 所設計的 Memory
4563博客
  • Hostloc 空間訪問刷分
  • 售賣場
  • 廣告位
  • 賣站?
在這裡新增小工具