Skip to content

Latest commit

 

History

History
228 lines (157 loc) · 12.7 KB

File metadata and controls

228 lines (157 loc) · 12.7 KB

Назовите модификатор доступа по умолчанию?

По умолчанию все члены класса в TypeScript являются public (общедоступными). Доступ к ним можно получить где угодно без каких-либо ограничений.

Когда нужно использовать ключевое слово declare?

Ключевое слово declare используется для внешних объявлений, в которых вы хотите определить переменную, которая, возможно, не была получена из файла TypeScript.

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

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

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

Как и когда нужно использовать enum?

В TypeScript enum представляют собой структуры данных постоянной длины, которые содержат набор констант. Enum полезны при присвоении свойств или значений, которые могут быть только определенным количеством возможных значений. Одним из распространенных примеров является значение масти одной карты в колоде игральных карт. Есть только 4 масти и не существует других возможных значений, и эти значения вряд ли изменятся. По этой причине enum было бы эффективным и ясным способом описания возможных мастей карты.

Что такое пространство имен и как его использовать?

Пространство имен используется для логической группировки функций. Пространство имен может включать интерфейсы, классы, функции и переменные для поддержки одной или группы связанных функций.

Пространство имен может быть создано с помощью ключевого слова namespace, за которым следует имя пространства имен. Все интерфейсы, классы и т. Д. Можно определить в фигурных скобках {}.

Как реализовать необязательные параметры?

  • Используйте синтаксис параметра ?: type, чтобы сделать параметр необязательным.
  • Используйте выражение typeof (параметр)! == 'undefined', чтобы проверить, был ли параметр инициализирован.
function multiply(a: number, b: number, c?: number): number {
	if (typeof c !== "undefined") {
		return a * b * c;
	}
	return a * b;
}

TypeScript функциональный язык программирования?

TypeScript поддерживает некоторые методы функционального программирования - в основном потому, что он имеет те же функции высшего порядка и замыкания, что и JavaScript.

Как с помощью TypeScript сделать переиспользуемые компоненты?

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

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

В чем разница между tuple и массивом в TypeScript?

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

const primaryColors: [string, string, string] = [
	"#ff0000",
	"#00ff00",
	"#0000ff",
];
console.log(primaryColors);

В чем разница между внутренними и внешними модулями TypeScript?

Внешний модуль

Например. В файле main.d.ts:

import log = module("log");
log.message("hello");

Этот ссылается на внешний модуль log, который определен в файле log.ts.

export function message(s: string) {
	console.log(s);
}

Внутренний модуль

В этом файле есть два внутренних модуля X.Y.Z.

module A.B.C {
	import XYZ = X.Y.Z;
	export function ping(x: number) {
		if (x > 0) {
			XYZ.pong(x  1)
			};
	}
}
module X.Y.Z {
	import ABC = A.B.C;
	export function pong(x: number) {
		if (x > 0) {
			ABC.ping(x  1)
			};
	}
}

Какие коллекции поддерживает TypeScript?

Массивы

let num: number[] = [1, 2, 3];
const numToo: Array<number> = [1, 2, 3];

Tuples

const life: [string, number] = ["everything", 42];

Объекты

const planet: { name: string; position: number } = {
	name: "earth",
	position: 3,
};

Map

const planet = new Map<string, string>();
planet.set("name", "earth");
planet.set("position", "1");

console.log(planet);
// Map { 'name' => 'earth', 'position' => '1' }

Set

Набор - это упорядоченный список значений без дубликатов.

const planet = new Set<string>();
planet.add("earth");

console.log(planet);
// Set { 'earth' }

WeakMap и WeakSet

WeakMap

const planet = new WeakMap<{ bodyType: string }, string>();
planet.set({ bodyType: "planet" }, "earth");

WeakSet

const planet = new WeakSet<{ name: string }>();
planet.add({ name: "earth" });

Для чего используется тип Record?

Создает тип объекта, ключи свойств которого Keys, а значениями свойств - Type. Эту утилиту можно использовать для сопоставления свойств одного типа с другим типом.

interface CatInfo {
	age: number;
	breed: string;
}

type CatName = "miffy" | "boris" | "mordred";

const cats: Record<CatName, CatInfo> = {
	miffy: { age: 10, breed: "Persian" },
	boris: { age: 5, breed: "Maine Coon" },
	mordred: { age: 16, breed: "British Shorthair" },
};

В чем преимущества TypeScript?

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

1. TypeScript упрощает знакомство с проектом

Одним из преимуществ TypeScript для крупных проектов является то, что его могут легко поддерживать разные люди и команды. Явно указанные структуры данных и аннотации типов значительно упрощают понимание решений, принимаемых инженерами, написавшими код. Другими словами, с помощью TypeScript можно гораздо быстрее познакомить новых разработчиков с проектами.

2. TypeScript минимизирует количество ошибок на этапе разработки

TypeScript предупреждает пользователя об ошибках типа в коде. Поскольку ошибки обнаруживаются редактором, а не пользователем или компилятором, разработчикам не нужно для этого билдить проект, что позволяет им сэкономить много времени.

3. Open Source поддерживает сильная команда разработчиков

TypeScript также поддерживается некоторыми из самых влиятельных имен в индустрии программного обеспечения. Slack, Asana и Visual Studio Code - это лишь несколько примеров программного обеспечения, использующего этот язык.

Кроме того, многие замечательные инструменты JavaScript, такие как фреймворки (Angular, Aurelia или Ionic) и библиотеки, разработаны на TypeScript (ZoomCharts, yWorks или GoJS). Даже такие технологические гиганты, как Microsoft, JetBrains, eBay, Ericsson и Ubisoft, публично заявили, что используют TypeScript.

Сообщество TypeScript постоянно растет, поэтому пользователи получают постоянную поддержку со стороны сильной команды разработчиков.

4. Удобство работы с данными

Использование TypeScript дает множество преимуществ, но все разработчики ценят то, что он значительно упрощает работу с данными. Код TypeScript, в отличие от JavaScript, более надежен и легче поддается рефакторингу.

5. Удобные инструменты разработки

TypeScript включает в себя довольно много инструментов, которые повышают производительность и значительно упрощают создание больших кодовых баз. Кроме того, этот язык программирования позволяет разработчикам не использовать модульные тесты в проекте. С TypeScript (TS) все остается так, как было изначально определено. Определения, написанные TS, во многих случаях могут заменить документацию.

TypeScript поддерживает абстрактные классы?

TypeScript поддерживает абстрактные классы с 2015 года, что приводит к ошибкам компилятора при попытке создать экземпляр этого класса. TypeScript 4.2 добавляет поддержку объявления, что функция конструктора является абстрактной.