Можно ли смешивать поля типа с другим типом?

#typescript

#typescript

Вопрос:

Есть ли способ сделать что-то подобное?

 type Details = {
  name: string
}

type Customer = {
  id: string,
  ...Details
}
  

Таким образом, клиент фактически становится этим:

 type Customer = {
  id: string,
  name: string
}
  

Ответ №1:

Вы можете использовать тип пересечения:

 type Customer = Details amp; {
  id: string
}
  

Из документов (курсив мой):

Тип пересечения объединяет несколько типов в один. Это позволяет вам объединять существующие типы, чтобы получить единый тип, обладающий всеми необходимыми функциями.

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

1. Спасибо, это то, что я искал

Ответ №2:

Это можно сделать, как показано в jonrsharpe опубликованном ответе. Вы также можете расширить тип с помощью такого интерфейса:

 export type Details = {
  name: string;
};

export interface Customer extends Details {
  id: string;
}

const customer: Customer = {
  name: 'name',
  id: 'id'
};
  

Ответ №3:

Недавно у меня была эта проблема, и у меня был немного другой подход:

 type Details = {
  name: string
}

type Customer = {
  id: string,
  name: Details
}
  

Это не совсем то, что вы ищете, но это один из способов пересечения.