typescript 如何获取类构造函数参数类型作为对象?

fivyi3re  于 2023-02-05  发布在  TypeScript
关注(0)|答案(1)|浏览(193)

例如,我有一个类Summator:

export default class Summator {
   constructor(private readonly firstArgument: number, private readonly secondArgument: number) {}

   get sum() {
     return this.firstArgument + this.secondArgument
   }
}

如果使用构造函数参数,则i得到元组[firstArgument:编号,第二个参数:number].如何获取不是元组而是对象,例如:

{
  firstArgument: number,
  secondArgument: number
}

我试着是这样去实现的:

[K in keyof ConstructorParameters<typeof Summator>]: ConstructorParameters<typeof Summator>[K]

但我得到了下一个对象:

{
  0: number,
  1: number
}
i86rm4rw

i86rm4rw1#

哦,参数的通配符名不可能是私有的(不是private关键字),你不能得到它的名字正统,相反,你可以使用declare一个对象作为一个参数,如下所示:

export default class Summator {
  private readonly firstArgument: number;
  private readonly secondArgument: number;

  constructor(options: {
    firstArgument: number;
    secondArgument: number
  }) {
    [this.firstArgument, this.secondArrgument] = [options.firstArgument, options.secondArgument]
  }

  get sum() {
    return this.firstArgument + this.secondArgument
  }
}

以及

ConstructorParameters<typeof Summator>[0]

相关问题