TypeScript — это строго типизированный язык программирования, являющийся надмножеством JavaScript. Он предлагает несколько функций, которые делают его популярным выбором среди разработчиков. Однако есть некоторые неочевидные вещи, которые разработчики должны знать о TypeScript, чтобы в полной мере использовать его возможности.
Утверждения типа
Утверждения типов позволяют разработчикам переопределять систему вывода типов по умолчанию в TypeScript. Они используются, когда разработчик знает о типе значения больше, чем может вывести TypeScript. Утверждения типа записываются в виде значения или значения как Type.
let message: unknown = "hello world";
let myString: string = <string> myVariable;
Необязательная цепочка
Необязательная цепочка — это функция, которая позволяет разработчикам получать доступ к вложенным свойствам объекта, не беспокоясь о том, существуют они или нет. Обозначается знаком ?. оператор.
let myObj = {
property1: {
property2: {
property3: "hello world"
}
}
}
// без необязательной цепочки
let myString = myObj.property1.property2.property3; // Error: Cannot read property 'property2' of undefined
// с необязательной цепочкаю
let myString = myObj?.property1?.property2?.property3; // Вернет "hello world"Защита типа
Защита типа — это способ сузить тип переменной до более конкретного типа. Они используются для проверки типа переменной во время выполнения и принятия решений на основе результата.
interface MyInterface {
myProperty: string
}
function myFunction(myParam: unknown) {
// Введите Guard, чтобы проверить, относится ли myParam к типу MyInterface.
if ((myParam as MyInterface).myProperty) {
console.log((myParam as MyInterface).myProperty);
}
}
Типы пересечений
Типы пересечения позволяют разработчикам объединять несколько типов в один тип. Это полезно, когда разработчику необходимо создать новый тип, обладающий всеми свойствами двух или более типов.
interface MyInterface1 {
myProperty1: string
}
interface MyInterface2 {
myProperty2: number
}
// Создание нового типа со всеми свойствами MyInterface1 и MyInterface2
type MyNewType = MyInterface1 & MyInterface2;
let myVariable: MyNewType = {
myProperty1: "hello",
myProperty2: 123
}
Пользовательские типы
Это дополнение к глобальным типам в typescript добавит вашему коду больше изящности.
declare type Nullable<T> = T | null;
declare type NullableString = Nullable<string>;
declare type NullableNumber = Nullable<number>;
declare type NullableDate = Nullable<Date>;
declare type NullableBollean = Nullable<boolean>;Пример использования
interface User {
name: NullableString;
age: NullableNumber;
address: NullableString;
updatedAt: NullableDate;
}Это лишь некоторые из неочевидных особенностей TypeScript, которые могут помочь разработчикам писать более эффективный и действенный код. Воспользовавшись этими функциями, разработчики могут повысить свою производительность и создавать более надежные приложения.