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

如何让类型定义文件适配不同文件夹下的同名JS文件?

解决方案

以下是几种无需复制d.ts文件即可解决类型匹配问题的方法:

方法1:在类型定义文件中声明多路径模块

在wasm/antlr4-runtime-wasm.d.ts中,保留原有类型定义的同时,添加针对debug和release子目录的模块声明,让TypeScript将不同路径的JS文件关联到同一套类型:

// 原有类型定义(保持不变)
export interface ANTLR4Wasm {
  // 你的类型字段/方法定义
}

export class Vector<T> {
  // 你的类定义
}

export default function Module(): Promise<any>; // 按实际返回类型调整

// 匹配wasm目录下任意子目录中的antlr4-runtime-wasm.js文件
declare module "./*/antlr4-runtime-wasm.js" {
  export { ANTLR4Wasm, Vector };
  export default Module;
}

通配符声明会自动关联debug/和release/下的目标JS文件,无需修改原有导入路径。

方法2:通过tsconfig.json路径映射关联类型

在tsconfig.json中配置paths,将两个子目录的JS文件导入路径直接映射到父目录的d.ts文件,注意配合baseUrl确保路径解析正确:

{
  "compilerOptions": {
    "baseUrl": ".", // 以项目根目录为基准路径
    "paths": {
      // 匹配src目录下导入wasm子目录中JS文件的路径
      "../wasm/*/antlr4-runtime-wasm.js": ["./wasm/antlr4-runtime-wasm.d.ts"]
    },
    // 确保TypeScript能扫描到wasm目录下的类型文件
    "include": ["src/**/*", "wasm/**/*"]
  }
}

配置完成后,TypeScript会将../wasm/release/antlr4-runtime-wasm.js和../wasm/debug/antlr4-runtime-wasm.js的导入请求,都指向父目录的类型定义文件。

方法3:创建轻量类型重定向文件(可选)

在debug/和release/目录下各创建一个空的类型重定向文件,内容仅为导入并重新导出父目录的类型:

// wasm/debug/antlr4-runtime-wasm.d.ts
export * from "../antlr4-runtime-wasm.d.ts";
export { default } from "../antlr4-runtime-wasm.d.ts";

// wasm/release/antlr4-runtime-wasm.d.ts
export * from "../antlr4-runtime-wasm.d.ts";
export { default } from "../antlr4-runtime-wasm.d.ts";

这种方式无需修改原有类型定义或tsconfig,通过轻量的重定向关联类型,避免复制完整的类型代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 01:05:02