Правильный способ объявить и назвать частичную версию интерфейса - PullRequest
0 голосов
/ 31 мая 2019

Каков был бы «правильный» способ объявления интерфейса книги в следующем сценарии, учитывая, что мы знаем точную структуру объекта книги в обоих случаях.Допустим, есть интерфейс Book:

export interface Book {
  id: string;
  title: string;
  year: number;
  authorId: string;
  pages: number;
  language: string;    
}

и интерфейс Author, который имеет свойство books, массив «частичных» объектов книги:

export interface Author {
  id: string;
  firstName: string;
  lastName: string;
  // How this book object should be declared?
  books: Array<{ id: string; title: string, year: number }>;
}

Ответы [ 2 ]

0 голосов
/ 31 мая 2019

Это действительно зависит от того, чего вы хотите достичь.

Вы можете использовать ключевое слово Partial, books: Partial<Book>[]; или создать другой интерфейс, содержащий { id: string; title: string, year: number } интерфейса Book.

0 голосов
/ 31 мая 2019

Если под "частичным" вы подразумеваете создание какого-либо из свойств в Book необязательно, вы можете использовать экспортированный помощник машинописи Partial:

export interface Author {
  ...
  books: Partial<Book>[]
}

если под "частичным" вы подразумеваете, что он включает только некоторые свойства Book, и эти свойства должны сохранять свой первоначальный тип, то вы можете использовать экспортированный вспомогательный тип машинописного текста Pick

export interface Author {
  ...
  books: Pick<Book, "id" | "title" | "year">[]
}
...