【问题标题】:Typescript: what is a "naked type parameter"打字稿:什么是“裸类型参数”
【发布时间】:2019-01-10 02:24:13
【问题描述】:

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

检查类型为裸类型参数...

的条件类型

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

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

【问题讨论】:

    标签: typescript


    【解决方案1】:

    当他们在这里说裸体时,他们的意思是类型参数存在而不被包装在另一种类型中,(即,数组、元组、函数、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 了解条件类型分布。

    【讨论】:

    • @NurbolAlpysbayev 是的,你是对的,顺序应该颠倒,固定,10x
    • 嗨@TitianCernicova-Dragomir!我对打字稿完全陌生,所以请回答我愚蠢的问题。在打字稿术语中,&lt;number | boolean&gt; 部分是否称为 union
    • @PenguinBlues 是的(不包括表示类型参数&lt;&gt;)。 A | B 是一个并集,而 A &amp; B 是一个交集。打字稿手册包含所有信息。
    • 很遗憾官方文档没有提到元组技巧。 ?
    • @MaxHeiber 我想如果类型别名与T 分布相同(在声明站点)仍然有效,但从文档中也不是很清楚?
    猜你喜欢
    • 2016-11-06
    • 2022-11-04
    • 2021-10-27
    • 2023-02-25
    • 1970-01-01
    • 2018-05-02
    • 1970-01-01
    • 2021-01-03
    • 2018-06-13
    相关资源
    最近更新 更多