Ответ 1
Когда они говорят "голый", это означает, что параметр типа присутствует без переноса в другой тип (т.е. Массив, или кортеж, или функцию, или обещание, или любой другой универсальный тип).
Пример:
type NakedUsage<T> = T extends boolean ? "YES" : "NO"
type WrappedUsage<T> = [T] extends [boolean] ? "YES" : "NO"; // wrapped in a tuple
Причина, по которой naked vs non nakes важна, состоит в том, что обнаженные использования распределяются по объединению, то есть условный тип применяется для каждого члена объединения, и результатом будет объединение всех приложений.
type Distributed = NakedUsage<number | boolean > // = NakedUsage<number> | NakedUsage<boolean> = "NO" | "YES"
type NotDistributed = WrappedUsage<number | boolean > // "NO"
type NotDistributed2 = WrappedUsage<boolean > // "YES"
Читайте здесь об условном распределении типов.