首页 > 解决方案 > 如何选择属于联合的内部类型

问题描述

Type['fieldName']在 Typescript 中选择内部类型(但是我不知道如何选择那些内部类型而不给它们作为联合的一部分时的唯一名称

是否有可能找出?下面片段中的值以获取注释中的类型?

type A = {
  b:
    | {
        c: boolean;
      }
    | {
        d: number;
      }
    | null
    | undefined;
};

type Conly = A["b"][?] // { c: boolean }
type Donly = A["b"][?] // { d: number }
type CorD = A["b"][?]; // { c: boolean } | { d: number }

标签: typescript

解决方案


您可以使用内置的条件辅助类型,即ExtractNonNullable

type Conly = Extract<A["b"], Record<"c", any>> // { c: boolean }
type Donly = Extract<A["b"], Record<"d", any>> // { d: number }
type CorD = NonNullable<A["b"]>; // { c: boolean } | { d: number }

实时代码示例


推荐阅读