【发布时间】:2019-01-10 02:24:13
【问题描述】:
检查类型为裸类型参数...
的条件类型
Google 没有帮助,或者答案是针对 C#,我不知道。在 Typescript 文档中也找不到该术语。从上下文中获取含义也很难......
顺便说一句,我确实知道“类型参数”是什么。但是“裸”是什么意思呢?
【问题讨论】:
标签: typescript
检查类型为裸类型参数...
的条件类型
Google 没有帮助,或者答案是针对 C#,我不知道。在 Typescript 文档中也找不到该术语。从上下文中获取含义也很难......
顺便说一句,我确实知道“类型参数”是什么。但是“裸”是什么意思呢?
【问题讨论】:
标签: typescript
当他们在这里说裸体时,他们的意思是类型参数存在而不被包装在另一种类型中,(即,数组、元组、函数、promise 或任何其他泛型类型)
例如:
type NakedUsage<T> = T extends boolean ? "YES" : "NO"
type WrappedUsage<T> = [T] extends [boolean] ? "YES" : "NO"; // wrapped in a tuple
裸与非裸重要的原因是裸用法分布在联合上,这意味着条件类型适用于联合的每个成员,结果将是所有应用的联合
type Distributed = NakedUsage<number | boolean > // = NakedUsage<number> | NakedUsage<boolean> = "NO" | "YES"
type NotDistributed = WrappedUsage<number | boolean > // "NO"
type NotDistributed2 = WrappedUsage<boolean > // "YES"
阅读here 了解条件类型分布。
【讨论】:
<number | boolean> 部分是否称为 union?
< 和>)。 A | B 是一个并集,而 A & B 是一个交集。打字稿手册包含所有信息。
T 分布相同(在声明站点)仍然有效,但从文档中也不是很清楚?