Псевдонимы типов

Последнее обновление: 15.05.2021

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
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850