typescript:什么是”裸类型参数”

Typescript: what is a "naked type parameter"

请参阅 https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-8.html#distributive-conditional-types

Conditional types in which the checked type is a naked type parameter...

Google 没有帮助,或者答案是针对 C#,我不知道。在 Typescript 文档中也找不到该术语。从上下文中获取含义也很难......

顺便说一句,我知道什么是"类型参数"。但是"赤裸"是什么意思呢?


当他们在这里说裸露时,他们的意思是类型参数存在而没有被package在另一种类型中,(即,数组,或元组,或函数,或Promise或任何其他泛型类型)

例如:

1
2
type NakedUsage< T > = T extends boolean ?"YES" :"NO"
type WrappedUsage< T > = [T] extends [boolean] ?"YES" :"NO"; // wrapped in a tuple

naked vs non nakes 很重要的原因是裸用法分布在联合上,这意味着条件类型应用于联合的每个成员,结果将是所有应用的联合

1
2
3
type Distributed = NakedUsage<number | boolean > // = NakedUsage<number> | NakedUsage<boolean> = "NO" |"YES"
type NotDistributed = WrappedUsage<number | boolean > //"NO"    
type NotDistributed2 = WrappedUsage<boolean > //"YES"

在此处阅读有关条件类型分布的信息。