Ответ 1
Вы можете больше узнать о unknown
в PR или анонсе RC, но суть в этом:
[..] неизвестный, который является типом безопасного аналога любого. Все, что присваивается неизвестному, но неизвестно не присваивается ни чем, кроме самого себя, и любое без утверждения типа или сужения на основе потока управления. Аналогично, никакие операции не разрешены неизвестным без предварительного утверждения или сужения до более конкретного типа.
Несколько примеров:
let vAny : any = 10 ; // We can assign anthing to any
let vUnknown: unknown = 10; // We can assign anthing to unknown just like any
let s1: string = vAny; // Any is assigable to anything
let s2: string = vUnknown; // Invalid we can't assign vUnknown to any other type (without an explicit assertion)
vAny.mehtod(); // ok anything goes with any
vUnknown.mehtod(); // not ok, we don't know anything about this variable
Предлагаемое использование:
Часто бывает, что мы хотим описать наименее способный тип в TypeScript. Это полезно для API-интерфейсов, которые хотят сигнализировать "это может быть любое значение, поэтому вы должны выполнить некоторый тип проверки, прежде чем использовать его". Это заставляет пользователей безопасно просматривать возвращенные значения.