Интерфейс машинописного текста для вложенного массива объектов

#javascript #reactjs #typescript #react-typescript

Вопрос:

Я новичок в машинописи, и мне нужно создать интерфейс для следующего типа реквизитов:

 const myProps = [
  {
    name: 'name1',
    on: true,
    children: [
      { name: 'test1', href: '#' },
      { name: 'test2', href: '#' },
      { name: 'test3', href: '#' }
    ]
  },
  {
    name: 'name2',
    on: false,
    children: [
      { name: 'test1', href: '#' },
      { name: 'test2', href: '#' },
      { name: 'test3', href: '#' },
      { name: 'test4', href: '#' },
      { name: 'test5', href: '#' }
    ]
  },
  {
    name: 'name3',
    on: false,
    children: [{ name: 'test1', href: '#' }]
  }
];
 

Я хочу создать интерфейс для его использования в приложении React Typescript.

Это интерфейс до сих пор:

 export interface IChildren {
  name: string,
  href: string
}

export interface IMyProps {
  name: string,
  on: boolean,
  children: IChildren,
}
 

Он не работает, я думаю, у него должны быть какие-то массивы. Есть какие-нибудь предложения?

Комментарии:

1. Типом children свойства в IMyProps должен быть массив, либо Array<IChildren> или IChildren[]

2. @Wazeed, почему бы вам не преобразовать свой комментарий в ответ.

Ответ №1:

Вы можете попробовать вот так,

  export interface CommonProps {
    name: string;
    href: string;
}

export interface MyProps {
    name: string;
    on: boolean;
    children: Array<CommonProps>;
}
 

Также обратите внимание, что интерфейсы данных не должны начинаться с соглашений об именах
"I" Интерфейсы, в которых есть объявления методов, должны иметь "I" такие
IMethodService