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оскільки це просто більш безпечний тип. Хоча заплутані імена.