any
тип:
any
Тип представляет все возможные значения JS. Каждый тип присваивается типу any
. Следовательно, тип any
является универсальным супертипом системы типов. Компилятор TS разрешит любую операцию с введенными значениями any
. Например:
let myVar: any;
myVar[0];
myVar();
myVar.length;
new myVar();
Во многих случаях это слишком мягко для компилятора TS. т.е. это позволит операциям, которые, как мы могли знать, привести к ошибке во время выполнения.
unknown
тип:
unknown
Тип представляет (как any
) все возможные значения JS. Каждый тип присваивается типу unknown
. Следовательно, тип unknown
- это еще один универсальный супертип системы типов (рядом any
). Однако компилятор TS не допускает никаких операций с введенными значениями unknown
. Кроме того, unknown
тип присваивается только типу any
. Пример прояснит это:
let myVar: unknown;
let myVar1: unknown = myVar; // No error
let myVar2: any = myVar; // No error
let myVar3: boolean = myVar; // Type 'unknown' is not assignable to type 'boolean'
// The following operations on myVar all give the error:
// Object is of type 'unknown'
myVar[0];
myVar();
myVar.length;
new myVar();
any
какdynamic
иunknown
естьobject
. Мне нравится, такunknown
как это просто более безопасный тип. Запутанные имена, хотя.