如何在TypeScript中构建类型安全的字面量对象键辅助类型?
TypeScript 辅助类型实现类型安全的字面量键检查
我想要创建一个TypeScript辅助类型来提升类型安全性,让TypeScript能够“计算”并检查对象键是否为字面量。
目前我定义了Word和Card类型,但Word类型中的字段不够规范,也没有真正实现类型检查:
type Card = { word_1: Word word_2: Word } type Word = { // ... 其他内容 in_Cards_as_word_1: Card[] in_Cards_as_word_2: Card[] }
编辑补充:我使用了@jcalz实现的LiteralOf类型:
interface TypeMap { Card: Card; Date: Date; } type LiteralOf<T> = { [K in keyof TypeMap]: T extends TypeMap[K] ? K : never }[keyof TypeMap];
是否可以像下面这样使用经过类型检查的辅助类型InAs?
type InAs<T extends LiteralOf<T>, F extends keyof T> = `in_${LiteralOf<T>}_as_${F}` type Word = { // ... 其他内容 InAs<Card, 'word_1'>: Card[] InAs<Card, 'word_2'>: Card[] } const word: Word // 此处应合法,因为`InAs`基于`LiteralOf`和字面量插值实现 word.in_Card_as_word_1
内容的提问来源于stack exchange,提问作者PEZO
相关产品推荐
相关产品推荐

