Skip to content

Latest commit

 

History

History
168 lines (117 loc) · 8.47 KB

File metadata and controls

168 lines (117 loc) · 8.47 KB

Что такое стрелочные/лямбда функции?

Функция жирной стрелки - это сокращенный синтаксис для определения функциональных выражений анонимных функций. Это похоже на лямбда-функции в других языках. Функция стрелки позволяет пропустить ключевое слово функции и написать более лаконичный код.

Объясните Rest параметры и правила объявления таких параметров.

Rest параметры позволяют передавать функции различное количество аргументов (ноль или более). Это полезно, когда вы не знаете, сколько параметров получит функция. Все аргументы после оставшегося символа ... будут сохранены в массиве.

Например:

function Greet(greeting: string, ...names: string[]) {
	return greeting + " " + names.join(", ") + "!";
}

Greet("Hello", "Steve", "Bill"); // returns "Hello Steve, Bill!"

Greet("Hello"); // returns "Hello !"

Что такое Triple-Slash директивы?

Директивы с тройной косой чертой - это однострочные комментарии, содержащие тег XML для использования в качестве директив компилятора. Каждая директива указывает, что загружать в процессе компиляции. Директивы с тройной косой чертой работают только в верхней части своего файла и будут рассматриваться как обычные комментарии в любом другом месте файла.

  • /// <reference path="..." /> - является наиболее распространенной директивой и определяет зависимость между файлами.

  • /// <reference types="..." /> - похож на path, но определяет зависимость для пакета.

  • /// <reference lib="..." /> - позволяет явно включить встроенный файл lib.

Что делает тип Omit?

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

Omit<Type, Keys>;

Например:

interface Todo {
	title: string;
	description: string;
	completed: boolean;
	createdAt: number;
}

type TodoPreview = Omit<Todo, "description">;

Что такое перегрузка функции в TypeScript?

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

function add(a: string, b: string): string;
function add(a: number, b: number): number;
function add(a: any, b: any): any {
	return a + b;
}

Как сделать все свойства интерфейса необязательными?

Вы можете использовать тип Partial, чтобы легко сделать все свойства необязательными.

Partial<Type>;

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

Вам следует использовать unknown, если вы не знаете, какой тип ожидать заранее, но хотите назначить его позже, и ключевое слово any не будет работать.

Что такое декораторы и к чему их можно применить?

Декоратор - это особый вид объявления, который позволяет вам изменять классы или члены классов сразу, помечая их аннотацией @<name>. Каждый декоратор должен ссылаться на функцию, которая будет оцениваться во время выполнения.

Например, декоратор @sealed будет соответствовать запечатанной функции. Все, что помечено @sealed, будет использоваться для оценки запечатанной функции.

function sealed(target) {
	// do something with 'target' ...
}

Их можно прикрепить к:

  • Объявлениям классов
  • Методам
  • Свойствам-аксессорам
  • Свойствам
  • Параметрам

По умолчанию декораторы не включены. Чтобы включить их, вы должны отредактировать поле experimentalDecorators в параметрах компилятора в файле tsconfig.json или в командной строке.

Что такое тип awaited?

Тип Awaited - это новый утилитарный тип, введенный в TypeScript 4.5. Этот тип предназначен для представления действий, таких как ожидание (await) в асинхронных функциях и метода .then() для обработки промисов - прежде всего, способа рекурсивной распаковки промисов.

type Awaited<T> = T extends PromiseLike<infer U> ? Awaited<U> : T;

В чем разница между типами never и void?

Тип void представляет отсутствие какого-либо типа. Это означает, что функция не возвращает значение или переменная не имеет типа значения.

function doSomething(): void {
	// ...
}

Тип never представляет недостижимый код. Это означает, что функция никогда не возвращает значение или переменная не может иметь значение.

function doSomething(): never {
	throw "never";
}

В чем разница между implements и extends?

implements - это ключевое слово, которое используется для принудительной реализации методов и свойств интерфейса в классе.

interface IEmployee {
	empCode: number;
	empName: string;
}

class Employee implements IEmployee {
	empCode: number;
	empName: string;
}

extends - это ключевое слово, которое используется для наследования методов и свойств базового класса в производном классе.

class Person {
	name: string;
}

class Employee extends Person {
	empCode: number;
}

Что такое условные типы в TypeScript?

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

type TypeName<T> = T extends string
	? "string"
	: T extends number
	? "number"
	: T extends boolean
	? "boolean"
	: T extends undefined
	? "undefined"
	: T extends Function
	? "function"
	: "object";