3 回答
TA贡献1895条经验 获得超3个赞
TypeScript 3.4的更新:
TypeScript 3.4附带了更简洁的语法,称为“ const contexts”。它已经合并到master中,因此在PR中应该可以立即使用。
此功能将使通过使用as constor <const>关键字创建不可变(恒定)元组类型/数组成为可能。由于无法修改此数组,因此TypeScript可以安全地采用较窄的文字类型,['a', 'b']而不是较宽的类型,('a' | 'b')[]甚至string[]可以忽略该类型,并且我们可以跳过对tuple()函数的调用。
提及你的问题
但是,问题在于常量ALL_SUITS的类型签名为('hearts'|'diamonds'|'spades'|'clubs')[]。 (...宁可这样) ['hearts','diamonds','spades','clubs']
使用新的语法,我们可以准确地实现以下目标:
const ALL_SUITS = <const> ['hearts', 'diamonds', 'spades', 'clubs'];
// or
const ALL_SUITS = ['hearts', 'diamonds', 'spades', 'clubs'] as const;
// type of ALL_SUITS is infererd to ['hearts', 'diamonds', 'spades', 'clubs']
有了这个不可变的数组,我们可以轻松地创建所需的联合类型:
type Suits = typeof ALL_SUITS[number]
- 3 回答
- 0 关注
- 1428 浏览
添加回答
举报