TypeScript Спеціальні типи
TypeScript має спеціальні типи, які можуть не посилатися на певний тип даних.
Тип: any
Тип any
- це тип, який вимикає перевірку типів і ефективно дозволяє використовувати всі типи.
Наведений нижче приклад не використовує any
і викличе помилку:
Приклад без any
let u = true;
u = "string"; // Error: Type 'string' is not assignable to type 'boolean'.
Math.round(u); // Помилка: аргумент типу "boolean" не можна призначити параметру типу "number".
Спробуйте самі »
Встановлення спеціального типу any
вимикає перевірку типу:
Приклад із any
let v: any = true;
v = "string"; // без помилок, оскільки це може бути "any" тип
Math.round(v); // без помилок, оскільки це може бути "any" тип
Спробуйте самі »
Тип any
може бути корисним способом отримати минулі помилки, оскільки він вимикає перевірку типу, але TypeScript не зможе забезпечити безпеку типу, а інструменти, які покладаються на дані типу, такі як автозаповнення, не працюватимуть. Пам’ятайте, цього слід уникати "any" ("будь-якою") ціною...
Тип: unknown
Тип unknown
є подібною, але безпечнішою альтернативою any
.
TypeScript запобігатиме використанню unknown
(невідомих) типів, як показано в прикладі нижче:
let w: unknown = 1;
w = "string"; // немає помилки
w = {
runANonExistentMethod: () => {
console.log("I think therefore I am");
}
} as { runANonExistentMethod: () => void}
// Як ми можемо уникнути помилки для коду, прокоментованого нижче, якщо ми не знаємо тип?
// w.runANonExistentMethod(); // Помилка: об’єкт має тип 'unknown'.
if(typeof w === 'object' && w !== null) {
(w as { runANonExistentMethod: Function }).runANonExistentMethod();
}
// Незважаючи на те, що ми повинні виконувати кілька разів, ми можемо зробити перевірку в if, щоб захистити наш тип і мати безпечніше приведення
Спробуйте самі »
Порівняйте приклад вище з попереднім прикладом, із any
.
Тип unknown
найкраще використовувати, коли ви не знаєте тип даних, що вводяться. Щоб додати тип пізніше, вам потрібно буде його привести.
Приведення (кастинг) — це коли ми використовуємо ключове слово "as", щоб сказати, що властивість або змінна має приведення типу.
Тип: never
Тип never
ефективно викидає помилку кожного разу, коли вона визначена.
let x: never = true; // Помилка: тип "boolean" не можна призначити типу "never".
Спробуйте самі »
Тип never
використовується рідко, особливо сам по собі; його основне використання — у передових генериках.
Тип: undefined & null
Типи undefined
та null
- це типи, які посилаються на примітиви JavaScript undefined
та null
відповідно.
let y: undefined = undefined;
let z: null = null;
Спробуйте самі »
Ці типи не дуже корисні, якщо strictNullChecks
не ввімкнено у файлі tsconfig.json
.