簡體   English   中英

Typescript:將相似對象的並集轉換為 object 類型

[英]Typescript: Convert union of similar objects to object type

如何使用 TypeScript 類型將相似對象的聯合轉換為 object 類型?

輸入

type I = {
  key: 'foo',
  value: Foo,
} | {
  key: 'bar',
  value: Bar,
};

Output

type O = {
  foo: Foo,
  bar: Bar,
};

我不確定這是否可能。 但誰知道呢? 請注意,該任務與任務不重復。

在 TypeScript 4.1 中,這是一個簡單的映射類型,帶有鍵重新映射 您可以遍歷I 聯合的每個成員T (它是聯合,而不是交集)並查找鍵/值類型: T['key']用於鍵, T['value']用於值。 像這樣:

type O = { [T in I as T['key']]: T['value'] };
/* type O = {
    foo: Foo;
    bar: Bar;
} */

Playground 代碼鏈接

暫無
暫無

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

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