代码之家  ›  专栏  ›  技术社区  ›  Nurbol Alpysbayev

类型脚本:什么是“裸类型参数”

  •  11
  • Nurbol Alpysbayev  · 技术社区  · 6 年前

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

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

    谷歌没有帮助,或者答案是针对C,我不知道。在typescript文档中也找不到该术语。从上下文中获得意义也是困难的…

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

    1 回复  |  直到 5 年前
        1
  •  11
  •   Titian Cernicova-Dragomir    5 年前

    当他们在这里说naked时,它们意味着类型参数不被包装在另一个类型(即数组、元组、函数、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 关于条件类型分发。