Skip to content

Latest commit

 

History

History
71 lines (51 loc) · 2.7 KB

typescript.md

File metadata and controls

71 lines (51 loc) · 2.7 KB

Как объявить кастомный тип?

type Programmer = {
	name: string;
	knownFor: string[];
};

В чем разница между интерфейсом и классом?

Интерфейс - это группа связанных свойств и методов, которые описывают объект, но не обеспечивают их реализацию или инициализацию.

Класс - это шаблон для создания объектов и инкапсулирует функциональность, которую должен иметь объект. Класс определяет состояние и поведение, которыми обладает объект.


Что такое Discriminated union?

Discriminated union - это шаблон, который указывает компилятору все возможные типы, которые может представлять вновь созданный тип.

type HouseCoffee = {
	kind: "house";
	ouncesDrip: number;
};

type Latte = {
	kind: "latte";
	ouncesEspresso: number;
	milkToEspresso: 4;
};

type Cappuccino = {
	kind: "cappuccino";
	ouncesEspresso: number;
	milkToEspresso: 2;
};

type Coffee = HouseCoffee | Latte | Cappuccino;

Тип Coffee - пример discriminated union.

Что такое дженерики в TypeScript?

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

function identity<T>(arg: T): T {
	return arg;
}
let output1 = identity<string>("myString");
let output2 = identity<number>(100);





Источники:

  1. https://metanit.com/web/typescript/3.1.php
  2. https://www.typescriptlang.org/docs/handbook/2/classes.html
  3. https://www.fullstory.com/blog/discriminated-unions-and-exhaustiveness-checking-in-typescript