TypeScript позволяет определять псевдонимы типов с помощью ключевого слова type:
type id = number | string; let userId : id = 2; console.log(`Id: ${userId}`); userId = "qwerty"; console.log(`Id: ${userId}`);
Здесь для объединения number|string
определяется псевдоним id
. Далее мы можем использовать этот псевдоним для определения переменных.
В том числе псевдонимы могут применяться для определения типа параметров и результата функции:
// определяем псевдоним type id = number | string; // параметр функции представляет псевдоним function printId(inputId: id){ console.log(`Id: ${inputId}`); } // тип результата - псевдоним function getId(isNumber:boolean): id{ if(isNumber) return 1; else return "1"; } // применение функций printId(12345); printId("qwerty"); console.log(getId(true));
Особенно полезны могут псевдонимы, когда мы имеем дело со сложными объектами:
type Person = {name: string; age: number}; let tom: Person = {name: "Tom", age: 36}; let bob: Person = {name: "Bob", age: 41}; function printPerson(user: Person){ console.log(`Name: ${user.name} Age: ${user.age}`); } printPerson(tom); printPerson(bob);
В данном случае определяется псевдоним Person
для типа {name: string; age: number}
, то есть типа, который представляет
сложный объект. Затем этот псевдоним применяется для определения переменных и параметров функции.
Одни псевдонимы могут заимствовать или расширять код других. Для этого применяется операция &. Например:
type Person = {name: string; age: number}; type Employee = Person & {company: string};
В данном случае псевдоним Employee
расширяет псевдоним Person
, добавляя к нему свойство company
, которое представляет
тип string
. То есть фактически мы имеем дело с типом:
type Employee = {name: string; age: number; company: string};
Применение будет аналогично применению обычных псевдонимов:
type Person = {name: string; age: number}; // расширяем псевдоним Person type Employee = Person & {company: string}; let tom: Person = {name: "Tom", age: 36}; let bob: Employee = {name: "Bob", age: 41, company: "Microsoft"}; function printPerson(user: Person){ console.log(`Name: ${user.name} Age: ${user.age}`); } printPerson(tom); printPerson(bob); // bob представляет Employee, но он также соответствует псевдониму Person