打字稿:从对象联合中提取类型

时间:2021-03-31 05:02:00

标签: typescript typescript-typings

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

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" }

1 个答案:

答案 0 :(得分:0)

你想要这样的东西吗?

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'> = {
    
}