По умолчанию все члены класса в TypeScript являются public (общедоступными). Доступ к ним можно получить где угодно без каких-либо ограничений.
Ключевое слово declare используется для внешних объявлений, в которых вы хотите определить переменную, которая, возможно, не была получена из файла TypeScript.
Generics - это инструмент, который позволяет создавать компоненты, которые можно переиспользовать. Он создает компонент, который может работать с различными типами данных. Это позволяет пользователям использовать свои собственные типы. Generics гарантируют, что программа масштабируемой в долгосрочной перспективе.
function identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("myString");
let output2 = identity<number>(100);
В 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 поддерживает некоторые методы функционального программирования - в основном потому, что он имеет те же функции высшего порядка и замыкания, что и JavaScript.
Generics - это инструмент, который позволяет создавать компоненты, которые можно переиспользовать. Он создает компонент, который может работать с различными типами данных. Это позволяет пользователям использовать свои собственные типы. Generics гарантируют, что программа масштабируемой в долгосрочной перспективе.
function identity<T>(arg: T): T {
return arg;
}
let output1 = identity<string>("myString");
let output2 = identity<number>(100);
Обычно tuple
представляет собой фиксированного размера массив, состоящий из элементов известного типа. Порядок элементов должен соблюдаться.
const primaryColors: [string, string, string] = [
"#ff0000",
"#00ff00",
"#0000ff",
];
console.log(primaryColors);
Например. В файле 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)
};
}
}
let num: number[] = [1, 2, 3];
const numToo: Array<number> = [1, 2, 3];
const life: [string, number] = ["everything", 42];
const planet: { name: string; position: number } = {
name: "earth",
position: 3,
};
const planet = new Map<string, string>();
planet.set("name", "earth");
planet.set("position", "1");
console.log(planet);
// Map { 'name' => 'earth', 'position' => '1' }
Набор - это упорядоченный список значений без дубликатов.
const planet = new Set<string>();
planet.add("earth");
console.log(planet);
// Set { 'earth' }
WeakMap
const planet = new WeakMap<{ bodyType: string }, string>();
planet.set({ bodyType: "planet" }, "earth");
WeakSet
const planet = new WeakSet<{ name: string }>();
planet.add({ name: "earth" });
Создает тип объекта, ключи свойств которого 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 для крупных проектов является то, что его могут легко поддерживать разные люди и команды. Явно указанные структуры данных и аннотации типов значительно упрощают понимание решений, принимаемых инженерами, написавшими код. Другими словами, с помощью TypeScript можно гораздо быстрее познакомить новых разработчиков с проектами.
TypeScript предупреждает пользователя об ошибках типа в коде. Поскольку ошибки обнаруживаются редактором, а не пользователем или компилятором, разработчикам не нужно для этого билдить проект, что позволяет им сэкономить много времени.
TypeScript также поддерживается некоторыми из самых влиятельных имен в индустрии программного обеспечения. Slack, Asana и Visual Studio Code - это лишь несколько примеров программного обеспечения, использующего этот язык.
Кроме того, многие замечательные инструменты JavaScript, такие как фреймворки (Angular, Aurelia или Ionic) и библиотеки, разработаны на TypeScript (ZoomCharts, yWorks или GoJS). Даже такие технологические гиганты, как Microsoft, JetBrains, eBay, Ericsson и Ubisoft, публично заявили, что используют TypeScript.
Сообщество TypeScript постоянно растет, поэтому пользователи получают постоянную поддержку со стороны сильной команды разработчиков.
Использование TypeScript дает множество преимуществ, но все разработчики ценят то, что он значительно упрощает работу с данными. Код TypeScript, в отличие от JavaScript, более надежен и легче поддается рефакторингу.
TypeScript включает в себя довольно много инструментов, которые повышают производительность и значительно упрощают создание больших кодовых баз. Кроме того, этот язык программирования позволяет разработчикам не использовать модульные тесты в проекте. С TypeScript (TS) все остается так, как было изначально определено. Определения, написанные TS, во многих случаях могут заменить документацию.
TypeScript поддерживает абстрактные классы с 2015 года, что приводит к ошибкам компилятора при попытке создать экземпляр этого класса. TypeScript 4.2 добавляет поддержку объявления, что функция конструктора является абстрактной.