Ошибка в определении интерфейса для данного объекта - PullRequest
0 голосов
/ 30 сентября 2019

Я хочу создать интерфейс в приложении 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": "typescript", "code": "2739", "severity": 8, "message": "Type '{num: string; productlist: {letter: string; products: string [];} [];} 'отсутствуют следующие свойства из типа' Product ': letter, products ",}

Ответы [ 2 ]

1 голос
/ 30 сентября 2019

Ваш интерфейс ProductList неверен, потому что ваш список продуктов не является string[], следующее должно работать

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

export interface IProductList {
 letter : string;
 products : string[];
}
1 голос
/ 30 сентября 2019

Ваш интерфейс имеет более плоскую структуру, чем ваши объекты (свойство 'letter' вложено в products в примерах объектов, но прямо на верхнем уровне в определении интерфейса). Это как-то так:

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

interface IProduct {
    num : number;
    productlist : IProductListEntry[];
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...