【问题标题】:TS - why are my class types not compatible with JSON object?TS - 为什么我的类类型与 JSON 对象不兼容?
【发布时间】:2018-01-24 09:26:45
【问题描述】:

我正在使用 typescript 在 node.js 中工作,并且我定义了 Tariff 和 Tariffs 类。我还使用 JSON 创建了应该与类兼容的假数据。但我在resolve() 方法中遇到错误:

'{ blabbla...' 类型的参数不能分配给 输入“关税 | PromiseLike'。

export class FakeDataProvider implements IDataProvider {

  loadTariffs?(request: LoadTariffsRequest): Promise<Tariffs>{
    return new Promise<Tariffs>((resolve, reject) => {
      resolve(fakeTariffs);
    });
  }

}

接下来我在另一个文件中定义并导出了类:

export class Tariff {
  tariffOptionId: number = 0;
  name: string = '';
}

export class Tariffs {
    // tariff: Tariff = new Tariff(); // this does not work
    tariff: Array<Tariff> = []; // this does not work too
}

然后我在另一个文件中导出了假的模型 JSON 数据:

let fakeTariffs =     
  {
    'tariffs': {
      'tariff': [
        { "name": "tariff1", "tariffOptionId": 1 },
        { "name": "tariff2", "tariffOptionId": 2 },
        { "name": "tariff3", "tariffOptionId": 3 }
      ]
    }
  };

export default fakeTariffs;

我做错了什么,如何修改类以兼容假数据?

【问题讨论】:

  • 尝试删除fakeTariffs 的'tariffs': { 部分。试试写let fakeTariffs: Tariffs。
  • 删除'tariffs': { 解决了这个问题。

标签: json typescript types typing


【解决方案1】:

你有;

tarrif

在代码的第一部分,并且;

tariff

在 JSON 中...

【讨论】:

  • 好的,谢谢!我修复了错字,但仍然抛出同样的错误。
【解决方案2】:

解决方案是使用resolve(fakeData.tariffs) 而不是resolve(fakeData)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-10-10
    • 2020-04-04
    • 1970-01-01
    • 2018-04-21
    • 1970-01-01
    • 2015-05-15
    相关资源
    最近更新 更多