【问题标题】:Typescript/Angular: Object is not Assignable to type打字稿/角度:对象不可分配给类型
【发布时间】:2022-08-18 22:11:39
【问题描述】:

所以我在我的项目中使用了 ngx-charts,目前我在打字稿代码的末尾陷入了一个看似枯燥的错误。我已经测试了以下数据,它按预期工作:

export var productSalesMulti = [
{
  name: \'Cotação\',
  series: [
    {
      name: \'0\',
      value: 10,
    },
    {
      name: \'1\',
      value: 20,
    },
    {
      name: \'2\',
      value: 30,
    },
    {
      name: \'3\',
      value: 20,
    },
    {
      name: \'4\',
      value: 40,
    },
    {
      name: \'5\',
      value: 30,
    },
    {
      name: \'6\',
      value: 10,
    },
    {
      name: \'7\',
      value: 15,
    },
    {
      name: \'8\',
      value: 35,
    },
    {
      name: \'9\',
      value: 50,
    },
    {
      name: \'10\',
      value: 35,
    },
    {
      name: \'11\',
      value: 40,
    }
  ]

}]

我的组件的输入看起来像:

但我收到以下错误:

错误:src/app/shared/components/grafico-ibovespa/grafico-ibovespa.component.ts:40:5 - 错误 TS2322:类型 \'{ 名称:字符串;系列:{名称:字符串;值:数字; }[]; }[]\' 不可分配给类型 \'[{ name: String;系列:[{名称:字符串;值:数字; }]; }]\'。 目标需要 1 个元素,但源可能有更少。

40 this.ibovespaGraphData = productSalesMulti;

所以我知道我的输入声明是错误的,但我看到问题出在哪里。我知道我可以写: @Input() ibovespaGraphData : any[] 它会工作,但为了可读性我宁愿不这样做。预先感谢您的帮助。

    标签: angular typescript


    【解决方案1】:

    您错误地将类型添加到 ibovespaGraphData 它被视为代码中的值并且类型推断不同。它应该如下所示

    ibovespaGraphData : Array<{
      name: string;
      series: Array<{
        name: string;
        value: number;
      }>
    }>
    

    或者像这样

    ibovespaGraphData  : {
      name: string;
      series: {
        name: string;
        value: number;
      }[]
    }[]
    

    【讨论】:

    • 非常感谢,我做了这个改变,它奏效了。
    猜你喜欢
    • 2021-10-11
    • 2020-06-29
    • 1970-01-01
    • 2019-06-08
    • 2019-09-25
    • 1970-01-01
    • 2022-08-14
    • 2016-10-25
    • 2021-08-19
    相关资源
    最近更新 更多