TypeScript — это мощная расширенная версия JavaScript, которая вводит в язык статическую типизацию. Одной из ключевых особенностей TypeScript является его способность выполнять утверждения типов, также известные как приведение типов, что позволяет разработчикам переопределять вывод типа по умолчанию и явно указывать тип значения. В этой статье мы рассмотрим различные методы выполнения утверждений типов в TypeScript, а также приведем примеры кода, иллюстрирующие каждый подход.
- Синтаксис угловых скобок.
Синтаксис угловых скобок — это наиболее распространенный и традиционный способ выполнения утверждений типов в TypeScript. Он напоминает угловые скобки HTML и используется для указания желаемого типа.
let someValue: any = "Hello, TypeScript!";
let strLength: number = (<string>someValue).length;
console.log(strLength); // Output: 18
- как ключевое слово:
Ключевое словоas— это альтернативный синтаксис для выполнения утверждений типов в TypeScript. Это особенно полезно при работе с синтаксисом JSX или когда синтаксис угловых скобок конфликтует с другими функциями языка.
let someValue: any = "Hello, TypeScript!";
let strLength: number = (someValue as string).length;
console.log(strLength); // Output: 18
- Частичное утверждение типа:
TypeScript позволяет частично утверждать типы с помощью служебного типаPartial<T>. Этот подход полезен, когда вы хотите утвердить только некоторые свойства объекта, оставив остальные необязательными.
interface Person {
name: string;
age?: number;
}
let person: Partial<Person> = { name: "John" };
console.log(person); // Output: { name: "John" }
- Оператор непустого утверждения:
Оператор непустого утверждения (!) используется для подтверждения того, что значение не является нулевым или неопределенным. Он сообщает компилятору TypeScript, что значение следует обрабатывать так, как будто оно имеет указанный тип, даже если у типа отсутствуют эти свойства.
function greet(name: string | undefined) {
console.log(`Hello, ${name!.toUpperCase()}!`);
}
greet("TypeScript"); // Output: Hello, TYPESCRIPT!
- Утверждение типа с помощью защиты типа:
TypeScript поддерживает защиту типа, то есть проверки во время выполнения, которые можно использовать для подтверждения типа значения. Защитники типов допускают более сложные утверждения типов на основе определенных условий.
interface Circle {
radius: number;
}
interface Rectangle {
width: number;
height: number;
}
function calculateArea(shape: Circle | Rectangle) {
if ("radius" in shape) {
// Type assertion for Circle
return Math.PI * (shape as Circle).radius 2;
} else {
// Type assertion for Rectangle
return (shape as Rectangle).width * (shape as Rectangle).height;
}
}
let myCircle: Circle = { radius: 5 };
console.log(calculateArea(myCircle)); // Output: 78.54
let myRectangle: Rectangle = { width: 4, height: 6 };
console.log(calculateArea(myRectangle)); // Output: 24
Утверждения типа — это мощная функция TypeScript, которая позволяет разработчикам явно определять тип значения. В этой статье мы рассмотрели несколько методов выполнения утверждений типов, включая синтаксис угловых скобок, ключевое слово as, утверждения частичного типа, непустой оператор утверждения и утверждения типа с защитой типа. Понимание и использование этих методов поможет вам писать более безопасный и удобный в сопровождении код TypeScript.
Освоив утверждения типов в TypeScript, вы сможете повысить безопасность типов и использовать весь потенциал возможностей статической типизации языка.