gpt4 book ai didi

typescript - 如何将字符串文字类型定义为另一种字符串文字类型的子类型?

转载 作者:行者123 更新时间:2023-12-05 01:29:36 25 4
gpt4 key购买 nike

如何创建一个字符串文字类型作为另一个字符串文字类型的子类型?

或者换句话说,我如何从字符串文字类型中选取值来创建新类型?

例子:

type Animal = 'goldfish' | 'tuna' | 'elephant'

// I would like to use Pick:
type Fish = Pick<Animal, 'goldfish', 'tuna'>

// So that the desired result is: 'goldfish | 'tuna'

但是,这不起作用,因为 Pick仅在选择(对象)属性键时有效。

最佳答案

而不是Pick,您可以Extract .不过,在这种情况下,对于字符串文字,它不会让您比 & 走得更远。

type Fish = Extract<Animal, 'goldfish' | 'lion'>   // 'goldfish'
type Fish2 = Animal & ('goldfish' | 'lion') // 'goldfish'

在这两种情况下,请注意,如果您尝试选择不属于原始集合的条目,则不会出现编译时错误;它将被简单地省略。用generic constraints (extends)您可以编写自己的 Subset 类型来实现这一点。

type Subset<K, T extends K> = T;

type Fish3 = Subset<Animal, 'goldfish' | 'lion'>; // compile error
type Fish4 = Subset<Animal, 'goldfish' | 'tuna'>; // 'goldfish' | 'tuna'

Playground Link

关于typescript - 如何将字符串文字类型定义为另一种字符串文字类型的子类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67628495/

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