错误TS2322:对象文字可能仅指定已知属性,并且类型中不存在“标签”

时间:2019-03-22 11:06:43

标签: angular typescript angular-services

我有一个无法解释的问题。

我通过接口实现创建了一个角度服务,但它告诉我我有一个无法解释的错误。

error TS2322: Type '{ labels: string[]; datasets: { data: number[]; backgroundColor: string[]; hoverBackgroundColor: string[]; }[]; }' is not assignable to type 'DataBase[]'.

对象文字只能指定已知属性,并且'label'在'DataBase []'类型中不存在。

这是我的代码:

Interface.ts

export interface Dashboardtwidget {
  title: string;
  widgetType: string;
  datatype: DataBase[];
}

export interface DataBase {
 labels: string[];
 datasets: {
 data: number[];
 backgroundColor: string[];
 hoverBackgroundColor: string[]
};
}

service.ts

import {Injectable} from '@angular/core';
import {Dashboardtwidget} from '../models/dashboard';


@Injectable()
 export class DashboardService {
  data: Dashboardtwidget[] = [
  {
    title: 'Widget 1',
    widgetType: 'cardStyle1',
    datatype: {
      labels: ['A','B','C'],
      datasets: [
        {
         data: [300, 50, 100],
         backgroundColor: [
          '#FF6384',
          '#36A2EB',
          '#FFCE56'
         ],
         hoverBackgroundColor: [
          '#FF6384',
          '#36A2EB',
          '#FFCE56'
        ]
       }]
    }
  }
  }

有人遇到过此问题和此错误消息吗?

因为我看不出问题出在哪里

1 个答案:

答案 0 :(得分:1)

当您将其声明为对象类型时,datasets中的

DataBase看起来像Array类型。

将您的DataBase界面更改为此:

export interface Dashboardtwidget {
  title: string;
  widgetType: string;
  datatype: DataBase[];
}

interface Dataset {
  data: number[];
  backgroundColor: string[];
  hoverBackgroundColor: string[];
}

export interface DataBase {
  labels: string[];
  datasets: Dataset[];
}

  

这是您推荐的Working Sample StackBlitz