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