НАЙКРАЩИЙ САЙТ ДЛЯ ВЕБ-РОЗРОБНИКІВ
TypeScript. Уроки для початківців

En Es De

TypeScript Кастинг (приведення)


Бувають випадки, коли під час роботи з типами необхідно змінити тип змінної, наприклад, коли бібліотека надає неправильні типи.

Кастинг (приведення) — це процес перевизначення типу.


Кастинг за допомогою as

Простим способом приведення змінної є використання ключового слова as, яке безпосередньо змінює тип заданої змінної.

Приклад

let x: unknown = 'hello';
console.log((x as string).length);
Спробуйте самі »

Кастинг фактично не змінює тип даних у змінній, наприклад, наступний код не працюватиме належним чином, оскільки змінна x все ще містить число.

let x: unknown = 4;
console.log((x as string).length); // друкує undefined, оскільки числа не мають довжини

TypeScript все одно намагатиметься перевірити приведення, щоб запобігти приведенням, які здаються неправильними, наприклад, наступне викличе помилку типу, оскільки TypeScript знає, що приведення рядка до числа не має сенсу без конвертації даних:

console.log((4 as string).length); // Помилка: перетворення типу 'number' на тип 'string' може бути помилковим, оскільки жоден тип достатньою мірою не накладається на інший. Якщо це було навмисно, спочатку перетворіть вираз на 'unknown'

У розділі Force casting нижче описано, як це змінити.


Кастинг за допомогою <>

Використання <> працює так само як приведення за допомогою as.

Приклад

let x: unknown = 'hello';
console.log((<string>x).length);
Спробуйте самі »

Цей тип кастингу не працюватиме з TSX, наприклад, під час роботи з файлами React.


Примусовий кастинг

Щоб перевизначити помилки типу, які TypeScript може викликати під час кастингу, спочатку переведіть до unknown, а потім до цільового типу.

Приклад

let x = 'hello';
console.log(((x as unknown) as number).length); // x насправді не є числом, тому це поверне значення undefined
Спробуйте самі »

TypeScript Вправи

Перевірте себе за допомогою вправ

Вправа:

Переведіть 'unknown' змінну myVar як рядок, використовуючи ключове слово as:

let myVar: unknown = "Hello world!";
console.log(.length);



Коментарі