我有一个对象
{
foo: "bar",
a: "b",
roses: "red",
}
我想创建一个模板文字,它会给我以下可能性:
"foo=bar" | "a=b" | "roses=red"
所以基本上,键=值
到目前为止我所做的是:
type Foo = `${keyof typeof obj}=${typeof obj[keyof typeof obj]}`;
但这给了我所有可能的组合:
"foo=bar" | "foo=b" | "foo=red" | "a=bar" | ...
我觉得我需要使用一个泛型,但我无法让它工作
最佳答案
您可以使用自索引mapped type :
const obj = {
foo: "bar",
a: "b",
roses: "red",
} as const;
type Foo = {
[K in keyof typeof obj]: `${K}=${typeof obj[K]}`
}[keyof typeof obj];
计算结果为:
type Foo = "foo=bar" | "a=b" | "roses=red"
关于javascript - 如何从对象创建模板文字类型以具有键=值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72628227/