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

TypeScript:使用keyof从接口生成新接口并拼接字符串重命名键

解决TypeScript模板字符串映射类型的Symbol键报错问题

你的报错根源在于keyof T的类型范围包含了symbol,而模板字符串${K}_options只能接受string | number | bigint | boolean类型的键,symbol类型无法被转换为字符串,因此触发了类型错误。

只需要在映射类型中过滤掉symbol类型的键即可解决,使用TypeScript内置的Extract工具类型,从keyof T中提取出可被模板字符串处理的键类型:

export type SelectBoxOptions<T> = {
    [K in Extract<keyof T, string | number | bigint | boolean> as `${K}_options`]: OptionType<T[K]>[]
}

说明

Extract<keyof T, string | number | bigint | boolean>会筛选出keyof T中属于string、number、bigint、boolean的键,排除掉symbol类型的键,这样后续的模板字符串转换就符合类型要求了。

修改后,无论是编译还是VS Code的类型推断都能正常工作,生成的类型和你手动定义的SelectBoxOptions完全一致。

内容的提问来源于stack exchange,提问作者dmix

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.11 07:35:11