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

TS中如何用ES6 import替代require构建数组并保持代码简洁?

解决方案

你可以根据你的项目配置选择以下任意一种方案,既符合TypeScript规范,又能保留近似原代码的简洁性:

  • 方案1:直接保留require语法(最省事,适合编译目标为CommonJS的项目)
    只要你项目安装了Node.js类型声明包@types/node,TypeScript完全支持原生require语法,不需要做任何修改,原代码可以直接复用:

    const stuff = [
        require("./elsewhere/part1"),
        require("./elsewhere/part2"),
        // ...
    ];
    

    没有安装依赖的话执行一行命令安装即可:npm i @types/node -D

  • 方案2:用createRequire模拟require(适合纯ESM规范的Node.js项目)
    如果你的项目强制使用ESM模块规范,不能直接用require,可以用Node.js内置的createRequire方法创建兼容的require函数,只需要多写一行初始化代码:

    import { createRequire } from 'module'
    const require = createRequire(import.meta.url)
    
    const stuff = [
        require("./elsewhere/part1"),
        require("./elsewhere/part2"),
        // ...
    ];
    

    这种写法完全符合ESM和TypeScript规范,运行效果和原代码完全一致。

  • 方案3:用统一导出简化静态import写法(适合完全要改用静态ES import的场景)
    如果你不想用任何CommonJS相关的语法,可以在模块所在的./elsewhere目录下新建index.ts统一导出所有子模块:

    // ./elsewhere/index.ts
    export { default as part1 } from './part1'
    export { default as part2 } from './part2'
    // 新增模块只需要在这里加一行导出
    

    然后在使用的地方一次性引入所有模块:

    import * as parts from './elsewhere'
    
    const stuff = [parts.part1, parts.part2, /* ... */]
    

    后续新增模块只需要修改index.ts的导出,使用处的数组只需要加对应的属性名即可,维护成本很低。


内容的提问来源于stack exchange,提问作者404 Name Not Found

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.03 02:15:04