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

TypeScript如何将运行时数组元素作为接口属性的允许取值

解决方案
  • 首先给数组添加as const常量断言,锁定数组的字面量元组类型,避免TypeScript自动将数组类型拓宽为string[]:
const list = ["bell", "edit", "log-out"] as const;
  • 接着用typeof list[number]提取数组所有元素组成的联合类型,赋值给prop属性即可:
interface SomeInterface {
    prop: typeof list[number]
}

说明

  • 实现效果和你之前手写的"bell" | "edit" | "log-out"完全一致,后续修改list数组的元素,prop的允许取值范围会同步更新。
  • 注意:该方案仅适用于list的值在编译阶段就能完全确定的场景,如果list是运行时动态生成的内容,TypeScript作为静态类型检查工具无法获取运行时数据,无法实现该需求。

内容的提问来源于stack exchange,提问作者Mateusz Czarczyński

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 22:18:03