type test = {
a: 1,
b: 2
}
type testValue = test[keyof test] // 1 | 2
以上可以把对象的值组成一个联合类型。
如果是元组中的对象呢?
[number]可以将元组转为联合类型。
这时候keyof,取到的是联合类型中,各个对象的键的交集。
没有交集则never。
type test = [
{
a: "aa",
b: "bb",
},
{
c: "cc",
}
]
type testUnion = test[number];
/*
{
a: "aa";
b: "bb";
} | {
c: "cc";
}
*/
type testUnionKey = keyof testUnion // never
type testUnionValue = testUnion[keyof testUnion] // never
对应的,对象的键取到交集。
如下所示取对象的值,会将各种情况组成一个联合类型。
type test = [
{
a: "aa",
b: "bb",
},
{
a: "aaa",
}
]
type testUnion = test[number];
/*
{
a: "aa";
b: "bb";
} | {
a: "aaa";
}
*/
type testUnionKey = keyof testUnion // "a"
type testUnionValue = testUnion[keyof testUnion] // "aa" | "aaa"