typescript 在类型脚本中作为参数传递时如何获取返回的类属性

1qczuiv0  于 2022-12-24  发布在  TypeScript
关注(0)|答案(1)|浏览(116)

当我在另一个类方法中作为参数传递类属性时,我在获取类属性方面遇到了问题
我的问题是如此复杂,我的代码,我试图简化它得到的解决方案
假设我有这样一个User类:

class User {
  name!:string 

  static setName(_name:string){
    const user = new User()
    user.name = _name 
    return user
 
  }

}

和公司拥有几乎相同的资产:

class Company {
  name!:string 
  brand!:string = 'mtx'

  static setName(_name:string){
    const company = new Company()
    company.name = _name 
    return company
  }

}

我有一个注册类它有register方法:

class Registration {

  static register<K >(name:string,Model: K & { setName:(n:string)=>K}): K{
   return Model.setName(name)
  }

}

并且我以这种方式注册用户和公司:

let user = Registration.register('mamad',User)
let company = Registration.register('mamad',Company)

这对用户有效,但对公司则返回此错误:

这里是操场

mklgxw1f

mklgxw1f1#

您只需删除K &,它将如下所示:

class Registration {

  static register<K >(name:string,Model: { setName:(n:string)=>K}): K{
   return Model.setName(name)
  }

}

当您呼叫时:

let company = Registration.register('mamad',Company)

你没有提供K参数,你只是基本上提供了setName,因为它是作为静态属性出现的。如果你有K &部分,那么你需要提供实际的示例,new Company()或类似的,以便能够引用示例字段。

相关问题