为给定对象定义接口时出错

时间:2019-09-30 14:54:36

标签: angular typescript

我想在Angular应用中创建界面,我具有以下对象结构

 productGroups: IProduct[] = 
 [
    {
      num:1,
      productlist:[
        {
          letter:"A",
          products:[
            'Aprod1',
            'Aprod2'
          ]
        },
        {
          letter:"B",
          products:[
            'Bprod3',
            'Bprod4'
          ]
        }
      ]        
    },

    {
      num:2,
      productlist:[
        {
          letter:"A",
          products:[
            'prod1',
            'prod2'
          ]
        }
      ]        
    } 
  ]

我尝试过的是

export interface IProduct {
 num : number;
 letter : string;
 products : string[];
 productlist : any[];//comprise array of letter and products
}

我是否正确定义了接口???我遇到错误 {     “ owner”:“打字稿”,     “ code”:“ 2739”,     “严重程度”:8     “ message”:“类型'{num:string; productlist:{字母:string; products:string [];} [];}'是                 在“产品”类型中缺少以下属性:字母,产品”, }

2 个答案:

答案 0 :(得分:1)

您的界面比对象的结构更扁平('letter'属性嵌套在示例对象的products内,但位于接口定义的最顶层)。更像是这样:

interface IProductListEntry {
    letter: string;
    products: string[]; 
}

interface IProduct {
    num : number;
    productlist : IProductListEntry[];
}

答案 1 :(得分:1)

您的ProductList界面错误,因为您的产品列表不是string[],因此以下操作应该有效

export interface IProduct {
 num : number;
 productlist : IProductList[];
}

export interface IProductList {
 letter : string;
 products : string[];
}