Typescript: интерфейсы против типов



в чем разница между этими операторами (интерфейс против типа)?



interface X {
a: number
b: string
}

type X = {
a: number
b: string
};
749   2  

2 ответов:

на Спецификация Языка Машинописи:

В отличие от объявления интерфейса, которое всегда вводит именованный тип объекта, объявление псевдонима типа может ввести имя для любого типа, включая примитивы, объединения и типы пересечений.

спецификация говорится:

типы интерфейса имеют много общего с псевдонимами типов объектов литералы, но так как типы интерфейса предложить больше возможностей, они обычно предпочитается вводить псевдонимы. Например, тип интерфейса

interface Point {
    x: number;
    y: number;
}

может быть записан как псевдоним типа

type Point = {
    x: number;
    y: number;
};

однако это означает, что следующие возможности теряются:

  • интерфейс может быть назван в предложении extends или implements, но псевдоним типа для литерала типа объекта не может.
  • интерфейс может иметь несколько объединенных объявлений, но псевдоним типа для литерала типа объекта не может.

https://www.typescriptlang.org/docs/handbook/advanced-types.html

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

Comments

    Ничего не найдено.