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

如何在TypeScript ES模块中分别导出默认类型与默认值?

如何在TypeScript ES模块中分别导出默认类型与默认值?

嗨,我懂你现在的困扰——之前靠单独的.d.ts文件导出monaco-editor的命名空间类型能满足TS编译,但现在想在ES模块里同时搞定默认类型和默认值的导出,对吧?我之前也碰到过类似的场景,给你分享两种实用的解决方法:

方法一:分开JS实现文件与TS类型文件

如果你还是想保持monaco.js(处理实际逻辑)和monaco.d.ts(声明类型)的分离结构,可以这样调整:

  • 在monaco.js里正常导出你的默认值:
    // 这里写你的实际逻辑,比如初始化monaco或者封装相关功能
    import * as monaco from 'monaco-editor';
    export default monaco;
    
  • 在对应的monaco.d.ts里,明确关联默认导出的类型:
    import * as monaco from 'monaco-editor';
    // 声明默认导出的类型和monaco-editor的命名空间一致
    declare const defaultExport: typeof monaco;
    export default defaultExport;
    

这样TS编译器就能准确识别默认导出的类型是monaco-editor的命名空间,同时运行时的默认值也能和类型对应上。

方法二:在同一个TS文件中整合类型与导出

如果想把类型声明和逻辑实现放在同一个.ts文件里(符合ES模块规范),操作更简单:

import * as monaco from 'monaco-editor';

// 这里可以添加你的自定义逻辑,比如配置monaco、封装工具方法等
const myMonaco = monaco;

// 直接导出默认值,TS会自动推断其类型为monaco-editor的命名空间
export default myMonaco;

这种情况下,TS会自动关联默认导出值的类型,不需要额外写类型声明,编译后的JS也会生成符合ES模块规范的默认导出。

其实你之前的.d.ts写法能生效,本质是直接把monaco-editor的命名空间类型作为默认导出,让TS认可了类型匹配。现在换成ES模块后,只要保证类型声明和实际导出值的类型对齐,就能解决问题啦。

备注:内容来源于stack exchange,提问作者user30388889

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.13 17:39:30