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