动态类型的Typescript记录

hc2pp10m  于 2023-05-08  发布在  TypeScript
关注(0)|答案(1)|浏览(161)

我有一个返回Record的类。我知道所有的记录名,我想给它们附加类型。有没有一种优雅的方式来做到这一点?到目前为止,我的代码看起来像这样:

interface DataInterface {
    bar: number;
    foo: string;
    fooBar: boolean;
}

export class MyClass {
  public bar: number;
  public foo: string;
  public fooBar: boolean;

  constructor(data: Record<string, DataInterface>) {
    this.bar = data.bar; // ERROR: Type 'DataInterface' is not assignable to type 'number'.
    this.foo = data.foo; // ERROR: Type 'DataInterface' is not assignable to type 'string'.
    this.fooBar = data.fooBar; // ERROR: Type 'DataInterface' is not assignable to type 'boolean'.
  }
}

考虑到我在DataInterface中可能有很多项目,您将如何处理它?

cwdobuhd

cwdobuhd1#

您可以直接使用DataInterface

constructor(data: DataInterface) {
    this.bar = data.bar;
    this.foo = data.foo;
    this.fooBar = data.fooBar;
  }

因为DataInterface已经是对象/记录

相关问题