type a = 'one' | 'two'
我想要一个像类型 b
这样的东西
type b = 'ONE' | 'TWO'
所以我尝试了
type a = 'one' | 'two'
type b = {[P in a]: P['toUpperCase']}
但那并不做我想要它做的事情。
谢谢阅读 :)
type a = 'one' | 'two'
我想要一个像类型 b
这样的东西
type b = 'ONE' | 'TWO'
所以我尝试了
type a = 'one' | 'two'
type b = {[P in a]: P['toUpperCase']}
但那并不做我想要它做的事情。
谢谢阅读 :)
type A = 'one' | 'two'
type B = Uppercase<A>
let b: B = 'one' // Type '"one"' is not assignable to type '"ONE" | "TWO"'.
除了 Uppercase<StringType>
之外,还有以下帮助类型:
它们可以在模板字面量类型中使用,如下所示:
type Fruit = 'Apple' | 'Banana'
type FruitField = `fr_${Uncapitalize<Fruit>}`
const fruit: Record<FruitField, boolean> = {
'fr_apple': true,
'fr_banana': false,
'fr_Apple': true, // error
'fr_peach': false // error
}
{大写字母A}
。 - Andrew Shepherd这里是链接到 TS Playground
以下是代码:
type A = 'one' | 'two'
type B = Uppercase<A>
let b: B = 'one' // Error
附言:我不理解为什么在之前的评论中,使用一种更复杂的形式来表达相同的意思。
编辑: Derek Nguyen(最佳答案)现在已经用更新且更简单的解决方案更改了他的答案。
type a ='one' | 'two'
存储在单独的文件中,然后读取文件内容,并以编程方式将值更改为大写。 - user11534547lowercase.d.ts
中的所有内容生成一个uppercase.d.ts
,其中所有字符串字面量类型都是大写的。但是我不确定我真的喜欢这个方法。如果你需要将首字母大写或其他偏离标准的命名约定,那么这种方法似乎很容易让人陷入困境。 - VLAZ