Type语法-Typescript中此语法的含义是什么

时间:2019-08-02 15:09:08

标签: typescript

我是Typescript的新手;我不明白这种语法的含义;有人可以向我解释吗?

type Type1<K> = K extends string ? { [P in K]: string } : never;

如果类型K扩展字符串,那么类型1将是字符串数组的文档吗?像这样:

{"x": ["a", "b", "c"],
 "z": ["d", "e", "f"]
//etc
}
Or
{"x": "a",
    "z": "b"
//etc
}

1 个答案:

答案 0 :(得分:0)

让我们首先看看{ [P in K]: string },这是一个映射类型。如果K是字符串文字类型的结合(例如:'a' | 'b'),则此类型的结果将是一个以这些名称作为键的对象类型,并且为string类型的对象类型(因此{{1 }})。实际上,这等效于预定义的{ a: string, b: string }类型。

Recorddistributive conditional type。这意味着,如果K extends string ? ... : never是联合体类型,则将采用联合体的每个成员并将其置于映射类型中。例如:

K