簡體   English   中英

如何從對象創建模板文字類型以具有鍵=值?

[英]How to create a template literal type from object to have keys=values?

我有一個對象

{
  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" | ...

我覺得我需要使用通用但我無法使其工作

您可以使用自索引映射類型

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"

游樂場鏈接

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM