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как это просто более безопасный тип. Запутанные имена, хотя.