Синтаксис машинописи - PullRequest
       29

Синтаксис машинописи

0 голосов
/ 15 ноября 2018

Я новичок в TypeScript и работаю над одним из репозиториев моей компании, в котором он активно используется. (Мы создаем приложение React / Redux.) Я знаком с основной концепцией обобщенных типов TypeScript, но особый синтаксис вызывает недоумение. Вот пример рассматриваемого кода (он находится в редукторе):

interface EntityState<Entity> {
  entity?: Entity;
  status: ApiStatus; // enum
}

interface FieldSummary {
    dataType?: string;
    // other properties...
}

function singleField(state: EntityState<FieldSummary> = defaultEntityState, 
  action: ActionTypes) {...}

Может ли кто-нибудь объяснить, что делает EntityState<FieldSummary>? Если вам нужны дальнейшие подробности, просто дайте мне знать.

1 Ответ

0 голосов
/ 15 ноября 2018

Это пример аргумента универсального типа.

interface EntityState<Entity> {
  entity?: Entity;
  status: ApiStatus;
}

Интерфейс будет содержать необязательный entity? типа, который будет определен позже.На данный момент он называется Entity.

Когда вы используете этот интерфейс, вы предоставляете тип, таким образом:

const stringEntity: EntityState<string>;

Свойство stringEntity.entity будет либо string или undefined (если это необязательно).

const numEntity: EntityState<number>;

Свойство numEntity.entity будет либо number, либо undefined.

И так далее.Аргумент типа, который вы предоставляете при использовании интерфейса, может быть любого типа, который удовлетворяет любым ограничениям - в вашем случае параметр типа является неограниченным.Это означает, что вы можете повторно использовать интерфейс, потому что тип определен позже.

...