打字稿:什么是"裸型参数"

Nur*_*yev 14 typescript

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

已检查类型为裸类型参数的条件类型...

谷歌没有帮助,或答案是针对C#,我不知道.无法在Typescript文档中找到该术语.从背景中获取意义也很难......

顺便说一下我知道什么是"类型参数".但"裸体"是什么意思呢?

Tit*_*mir 15

当他们在这里说裸体时,他们意味着类型参数存在而不包含在另一种类型中(即,数组,或元组,或函数,或promise或任何其他泛型类型)

例如:

type NakedUsage<T> = T extends boolean ? "YES" : "NO"
type WrappedUsage<T> = [T] extends [boolean] ? "YES" : "NO"; // wrapped in a tuple
Run Code Online (Sandbox Code Playgroud)

裸体与非裸体之所以重要的原因是裸体用法分布在一个联合上,这意味着条件类型适用于联合体的每个成员,结果将是所有应用程序的并集

type Distributed = NakedUsage<number | boolean > // = NakedUsage<number> | NakedUsage<boolean> =  "NO" | "YES" 
type NotDistributed = WrappedUsage<number | boolean > // "NO"    
type NotDistributed2 = WrappedUsage<boolean > // "YES"
Run Code Online (Sandbox Code Playgroud)

  • @PenguinBlues 是的(不包括表示*类型参数*的`&lt;`和`&gt;`)。`A | B` 是并集,而`A &amp; B` 是交集。打字稿手册包含所有信息。 (3认同)
  • @MaxHeiber我猜类型别名是否与“T”分布基本相同(在声明站点)仍然有效,但这从文档中也不是很清楚 (2认同)