【问题标题】:Typescript: Extract type from union of objects [duplicate]打字稿:从对象的联合中提取类型[重复]
【发布时间】:2021-06-27 02:50:51
【问题描述】:

我有一个这样的对象的联合

type NotificationState =
    | { kind: "dynamic"; state: "pending" }
    | { kind: "dynamic"; state: "deployingNodes" }
    | { kind: "dynamic"; state: "provisioningEndpoints" }
    | { kind: "dynamic"; state: "connecting" }
    | { kind: "dynamic"; state: "applyingCredentials" }
    | { kind: "static"; state: "online" }
    | { kind: "static"; state: "updating" }
    | { kind: "static"; state: "maintenance" }
    | { kind: "static"; state: "unknown" }

打字稿是否支持通过过滤器创建新类型的方法?例如,我想创建一个类型,其中 kinddynamic

type DynamicNotificationState =
    | { kind: "dynamic"; state: "pending" }
    | { kind: "dynamic"; state: "deployingNodes" }
    | { kind: "dynamic"; state: "provisioningEndpoints" }
    | { kind: "dynamic"; state: "connecting" }
    | { kind: "dynamic"; state: "applyingCredentials" }

【问题讨论】:

  • Extract<NotificationState, {kind: 'dynamic'}>
  • @kaya3 完美!谢谢

标签: typescript typescript-typings


【解决方案1】:

你想要这样的东西吗?

type DynamicNotificationState<T> =
    | { kind: T; state: "pending" }
    | { kind: T; state: "deployingNodes" }
    | { kind: T; state: "provisioningEndpoints" }
    | { kind: T; state: "connecting" }
    | { kind: T; state: "applyingCredentials" }

const v: DynamicNotificationState<'dynamic'> = {
    
}

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 2020-06-15
    • 2019-03-27
    • 2022-06-13
    • 1970-01-01
    • 2021-03-13
    • 2018-12-06
    • 2020-04-19
    相关资源
    最近更新 更多