Sobes.tech
Назад к вопросам
Middle+
3

Чем отличаются типы any и unknown в TypeScript?

Компании, где спрашивали
IT OneIT One

Ответ от нейросети

sobes.tech AI

Типы any и unknown в TypeScript оба позволяют хранить значения любого типа, но отличаются уровнем безопасности и контроля.

  • any отключает проверку типов полностью. Переменную с типом any можно присвоить чему угодно, и с ней можно делать любые операции без ошибок компиляции. Это снижает безопасность и преимущества типизации.

  • unknown — более безопасный аналог any. Он тоже может содержать значение любого типа, но перед использованием значения нужно выполнить проверку типа или привести к нужному типу. Это заставляет разработчика явно обрабатывать возможные варианты и предотвращает ошибки.

Пример:

let a: any = 10;
let u: unknown = 10;

// Можно вызвать метод без ошибок для any
console.log(a.toFixed(2));

// Для unknown нужно сначала проверить тип
if (typeof u === 'number') {
  console.log(u.toFixed(2));
}

Таким образом, unknown рекомендуется использовать, когда нужно принимать значения любого типа, но при этом сохранить безопасность типов, а any — когда нужна максимальная гибкость без проверок.