Devs Hive
Повернутися до всіх запитань

Яка різниця між any i unknown в TypeScript?

TypeScriptJunior/Middle/Senior
Зустрічали на інтервʼю:1 користувач

Окрім того, що це запитання часто звучить на інтервʼю, різницю корисно розуміти і для роботи.

Any

Отже, спочатку розберемось з any - простими словами, коли ми його використовуємо, ми відключаємо TypeScript.

let num: any = 1; // ми відключили TypeScript для змінної num

num.push() // TS відключений тому ми можемо використовувати будь які методи

// в числа такого метода не існує тому ми отримаємо помилку в runtime
// але не зловимо її на етапі компіляції чи лінтера

Unknown

Його часто порівнюють з безпечною альтернативою any. Якщо ми вказуємо тип unknown, то ми можемо записувати будь що, але при використанні ми забовʼязані виконати type narrowing і перевірити тип.

let num: unknown = 1;

num = 'some string'; // unknown дозволяє записувати будь що

// якщо ми спробуємо виклакати якийсь метод чи властивість на num
// ми отримаємо помилку і TS забовʼяже перевірити тип
if (typeof num === 'string') {
// тепер ми зможемо викликати будь який метод чи властивість
// які доступні в String
num.toUpperCase();
}

// Для прикладу, застосуємо narrowing для number
if (typeof num === 'number') {
num.toFixed();
}

Якщо підсумувати, то з точки зору безпеки типів - потрібно завжди використовувати unknown і уникати використання any.

Зустрічав на інтервʼю?

Коментарі (0)

Увійдіть, щоб залишити коментар

Поки що немає коментарів. Будьте першим!