解构和初始化构造函数属性

时间:2018-10-07 13:40:50

标签: typescript

有没有办法在Typescript中实现类似的目的?

class Coin {
  last_scraped: number;

  constructor(public { gecko_id: string, symbol: string }) {}
}

Coin在哪里包含gecko_id: stringsymbol: string的对象,并将它们作为公共属性分配给类实例?

3 个答案:

答案 0 :(得分:1)

是的,您可以这样做:

constructor(args: {gecko_id: string, symbol: string }) {
    return Object.assign(this, args);
}

答案 1 :(得分:0)

我可以想到的两种方式之一:
首先,调用者需要从对象获取值并将其作为参数传递。

class Coin {
  last_scraped: number;

  constructor(public gecko_id: string, public symbol: string) {}
}

第二,在构造函数中完成工作:

interface I {
  gecko_id: string;
  symbol: string;
}

class Coin {
  last_scraped: number;
  gecko_id: string;
  symbol: string;

  constructor(object: I) {
    this.gecko_id = object.gecko_id;
    this.symbol = object.symbol;
  }
}

答案 2 :(得分:0)

听起来,您想要一个将接收任何对象并返回具有所有相同字段以及类型为last_scraped的名为number的新字段的新对象的函数。

type Coin<T> = { last_scraped: number } & T;

function newCoin<T>(T x): Coin<T> {
   return { last_scraped: 0, ...x }   
}