Skip to main content
Практика завдань

Відмінності між any та unknown у TypeScript

У TypeScript є два типи, які можна використовувати для представлення будь-яких значень: any та unknown. Хоча обидва типи дозволяють працювати з будь-якими значеннями, їхня поведінка та безпека в контексті типів відрізняються.

Тип any

Тип any використовується, коли ви хочете вказати, що значення може бути будь-якого типу. Це дозволяє працювати з змінними, типи яких не відомі під час компіляції, але в той же час any усуває обмеження типів, дозволяючи робити з змінною все, що завгодно.

Переваги використання any

  • Гнучкість: дозволяє працювати зі змінними, тип яких заздалегідь невідомий.
  • Зручність: зручно при інтеграції з зовнішніми бібліотеками, коли типи не визначені, або коли потрібно тимчасово вимкнути перевірку типів.

Недоліки використання any

  • Втрата безпеки типів: використання any послаблює систему типів TypeScript, дозволяючи помилки, які не будуть виявлені під час компіляції.
  • Ускладнює обслуговування коду: через відсутність інформації про типи може стати важко зрозуміти, які значення можуть бути присвоєні змінній.

Приклад використання any

typescript
let value: any; value = 42; // Number value = "Hello"; // String value = { name: "John" }; // Object value.someMethod(); // Помилка не буде виявлена під час компіляції

Тип unknown

Тип unknown є більш безпечним варіантом для any. З unknown ви все ще можете працювати зі змінною будь-якого типу, але вам потрібно перевірити її тип перед виконанням операцій з нею. Тобто, на відміну від any, ви не зможете виконувати операції з змінною типу unknown без перевірки її типу.

Переваги використання unknown

  • Безпека типів: хоча unknown дозволяє працювати з будь-якими типами, компілятор TypeScript вимагає, щоб ви виконали перевірку типу перед виконанням будь-яких операцій зі значенням. Це допомагає уникнути помилок і підтримує безпеку типів.
  • Більш безпечний вибір: unknown зберігає систему типів TypeScript, вимагаючи явної перевірки перед використанням значення.

Недоліки використання unknown:

  • Не такий гнучкий, як any: перед використанням змінної типу unknown вам потрібно виконати перевірку типу, що додає додатковий код.

Приклад використання unknown

typescript
let value: unknown; value = 42; // Number value = "Hello"; // String // Помилка компіляції: не можна викликати методи на типі `unknown` value.someMethod(); // Потрібно виконати перевірку типу перед використанням if (typeof value === "string") { console.log(value.toUpperCase()); // Тепер це безпечно }

Коли використовувати any vs unknown?

  • Використовуйте any, коли ви точно знаєте, що вам не потрібно перевіряти тип, або в випадках, коли тип не може бути точно визначений, наприклад, при роботі з динамічними даними або сторонніми бібліотеками без типів.
  • Використовуйте unknown, коли вам потрібно працювати зі змінними, тип яких невідомий, але ви хочете підтримувати безпеку типів, виконуючи явну перевірку типу перед використанням даних.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.

Дочитали статтю?
Практика завдань