gpt4 book ai didi

javascript - 流: Dynamically generate string union types?

转载 作者:可可西里 更新时间:2023-11-01 01:43:46 25 4
gpt4 key购买 nike

假设我有一个流类型 Suit,我想将它组合成另一种名为 Card 的类型。

// types.js

type Suit =
| "Diamonds"
| "Clubs"
| "Hearts"
| "Spades";


type Card = {
...
suit: Suit,
...
}

与其直接在 suit.js 中对 Suit 字符串进行硬编码,不如根据 JavaScript 原语(数组)动态生成 Suit 类型?说...

// constants.js

const SUITS = ['Diamonds', 'Clubs', 'Hearts', 'Spades'];

通过这种方式,西装只需定义一次,并且可以在 JavaScript 结构中定义,该结构将在应用程序的其他部分中重复使用。例如,应用程序中其他地方的组件需要访问所有可用套装:

// component.js

SUITS.map((suit: Suit): void => { ... });

最佳答案

这实际上可以使用实用程序类型 $Keys :

const SUITS = {
Diamonds: 'Diamonds',
Clubs: 'Clubs',
Hearts: 'Hearts',
Spades: 'Spades',
};

type Suit = $Keys<typeof SUITS>

const suit1 : Suit = 'Diamonds'; // OK
const suit2 : Suit = 'Foo'; // Type error

请注意,对于此示例,SUITS 中的值实际上并不重要,流程将查看 SUITS 中的键。 type Suit 将类似于联合类型 type Suit = 'Diamonds' | '俱乐部' | ...

关于javascript - 流: Dynamically generate string union types?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42279783/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com