从打字稿中的对象中的数据创建一个 class 实例

Create a class instance from data in an object in typescript

我在 typescript 网站上有一个 full example。基本上,这个函数的最后一行不起作用

export function getInvoice(number: number): Invoice | undefined {
    let jsonObj = invoices.find(
        (invoice) => invoice.number === number
    );
    if(!jsonObj)
        return jsonObj;
    jsonObj = Object.assign(Invoice.prototype, jsonObj);
    return jsonObj;
}

发票是包含发票数据的对象数组。取回对象后,我试图将其转换为类型化的 Invoice 对象以供使用。 return jsonObj 由于某种原因出错,错误

TS2739: Type '{ name: string; number: number; amount: string; due: string; }' is missing the following properties from type 'Invoice': _name, _number, _amount, _due

您示例中的代码滥用了 Object.assign():如果您想要 Invoice class 的实例,则创建一个:

TS Playground

export function getInvoice(targetNumber: number): Invoice | undefined {
  const o = invoices.find(({number}) => number === targetNumber);
  if(!o) return undefined;
  const {amount, due, name, number} = o;
  return new Invoice(name, number, amount, due);
}