Машинопись: что такое "параметр голого типа"

См. Https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types.

Условные типы, в которых проверяемый тип является параметром обнаженного типа...

Google не помогает, или ответы для С#, который я не знаю. Не удалось найти термин в документах Typescript. Получить смысл из контекста также сложно...

Кстати, я знаю, что такое "параметр типа". Но что значит "голый"?

Ответ 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"

Читайте здесь об условном распределении типов.