Typescript:什么是“裸类型参数”

时间:2018-08-02 10:37:36

标签: typescript

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

  

条件类型,其中选中的类型是裸类型参数 ...

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

顺便说一句,我确实知道什么是“类型参数”。但是“裸”是什么意思?

1 个答案:

答案 0 :(得分:11)

在这里说“裸”时,表示存在类型参数而没有将其包装在另一个类型中(例如,数组,元组,函数,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有关条件类型分布的信息。