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” |
在此处阅读有关条件类型分布的信息。
- @NurbolAlpysbayev 是的,您是对的,顺序应该颠倒,固定,10 倍
- 嗨@TitianCernicova-Dragomir!我对typescript完全陌生,所以请回答我愚蠢的问题。 <number | boolean> 部分在typescript术语中称为 union 吗?
- @PenguinBlues 是的(不包括表示类型参数的 < 和 > )。 A | B 是一个并集,而 A & B 是一个交集。typescript手册包含所有信息。
- 很遗憾官方文档没有提到元组技巧。 e??…
- @TitianCernicova-Dragomir,这个定义似乎并不完全正确,因为当 Id 定义为 type Id<T> = T 时,Id< T > 算作裸类型参数。所以看起来定义必须包括的不仅仅是语法。
- @MaxHeiber 我猜如果类型别名(在声明站点)与 T 发行版一样简单(在声明站点上)仍然有效,但这从文档中也不是很清楚 e???
来源:https://www.codenong.com/51651499/