You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.29 17:23:15