首页 > 解决方案 > 打字稿:什么是“裸类型参数”

问题描述

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

检查类型是裸类型参数的条件类型...

谷歌没有帮助,或者答案是 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"

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


推荐阅读