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

编译为JavaScript时如何省略.d.ts文件的导入语句?

解决方法

1. 用类型导入替代普通导入

把代码里的普通导入改成类型导入,TypeScript编译时会自动移除这类仅用于类型检查的导入语句:

// 原导入(会被编译进JS)
// import { TargetClass } from 'your-library';

// 修改为类型导入(仅做类型校验,编译后消失)
import type { TargetClass } from 'your-library';

// 直接使用script标签加载后全局挂载的类
const instance = new TargetClass();

2. 配置tsconfig.json的正确选项

调整tsconfig.json避免生成CommonJS格式的导入,适配浏览器环境:

{
  "compilerOptions": {
    "target": "ESNext",
    "module": "ESNext", // 或"ES6",适配浏览器模块规范
    "moduleResolution": "Bundler", // 或"Node16",根据TS版本选择
    "allowUmdGlobalAccess": true, // 允许直接访问UMD库的全局变量
    "isolatedModules": true, // 确保类型导入被正确处理
    "noEmitOnError": true
  }
}
  • allowUmdGlobalAccess:如果你的库是UMD格式,通过script加载后会挂载到全局,这个选项能让TS识别全局变量并关联对应类型。
  • module: "ESNext":避免生成CommonJS的require语句,符合浏览器环境要求。

3. 补充全局类型声明(可选)

如果你的.d.ts是模块式(含export),可以添加全局声明,这样无需导入就能直接使用类型:

// your-library.d.ts
declare global {
  interface Window {
    TargetClass: typeof import('your-library').TargetClass;
  }
}

export {}; // 确保文件被识别为模块

之后代码里可直接使用类,同时保留类型检查,且不会生成导入语句:

const instance = new TargetClass();

内容的提问来源于stack exchange,提问作者Space.yg

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 19:22:41