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

如何不通过类型推断从TS类型生成对应运行时JS数组

解决方案

TS 静态类型会在编译阶段完全擦除,无法直接基于纯类型生成运行时代码,我们可以采用单源定义的写法,让类型校验和运行时数组基于同一份数据生成,完全避免重复编码的不一致问题:

// 先定义运行时可用的数据库常量数组,用as const锁定字面量类型,避免被拓宽为string[]
export const MYSQL_DATABASES = ["db1", "db2", "db9"] as const;

// 从常量数组提取联合类型,定义到TypesInfo中,和运行时数据完全同步
export interface TypesInfo {
    mysqlDatabases: typeof MYSQL_DATABASES[number];
}

// 业务代码里直接复用预定义的常量即可
export class Service {
    protected static $SetInfo() {
        return {
            mysql: MYSQL_DATABASES, // 和TypesInfo.mysqlDatabases类型完全对应
            mongodb: true
        };
    }
}

该方案的优势:

  • 仅需维护MYSQL_DATABASES一处枚举值,修改时类型和运行时代码自动同步,不会出现两边不一致的问题
  • TypesInfo.mysqlDatabases仍然是"db1" | "db2" | "db9"联合类型,原有类型校验逻辑完全不受影响
  • 运行时可以直接使用MYSQL_DATABASES常量,不需要额外做转换

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 17:06:04