从对象中提取字段以匹配Typescript

时间:2016-05-27 12:44:45

标签: typescript

嘿,我有一个像这样的对象:

let o = {"foo":"blah", "blah": "foo", "foo2":"blah2"}

我的课程定义如下:

class Foo {
 constructor(public foo: string, blah: string) {}
}

是否可以通过提取字段fooblah(但不是foo2)来基于o实例化foo。我的意思是,我知道我可以编写这样的功能,但我想知道它是否可以“自动”?

1 个答案:

答案 0 :(得分:0)

我认为你能做的最好的事情就是这样:

type FooBlah = { foo: string, blah: string }

let o = { "foo": "blah", "blah": "foo", "foo2": "blah2" } as FooBlah

class Foo {
  private foo: string
  constructor({foo, blah}: FooBlah) {
    this.foo = foo;
  }
}

我们是destructuring对象,然后使用其各个字段,由于FooBlah类型声明而保留其类型信息。