【问题标题】:Vue + TypeScript override `export default Vue`Vue + TypeScript 覆盖`导出默认 Vue`
【发布时间】:2019-04-02 19:57:35
【问题描述】:

我正在尝试使用 Vue 和 TypeScript。我正在尝试在我的 tsconfig 中编译为 AMD。

Vue.js 自带的类型定义在 vue/types/index.d.ts 中

export default Vue;

但是,这会导致 typescript 编译这个:

import Vue as "vue";
export default Vue.extend({ ... });

基本上是这样的:

define(["vue"], function(vue) {
  exports.default = vue.default.extend({  ... })
});

注意,它认为 vue 应该有一个属性 .default,但它没有。无论如何要编写一个类型定义来覆盖默认的 vue 类型定义,该定义声明如下:

export = Vue;

或者 tsconfig 中的某个标志告诉 typescript 不要将该 .default 属性添加到已编译的 AMD 模块中?

【问题讨论】:

    标签: typescript vue.js amd typescript-typings


    【解决方案1】:

    启用esModuleInterop 编译器选项将使TypeScript 生成代码以在运行时检查vuevue.default

    正如你所注意到的,Vue 类型声明不准确,但基于this previous issue,我不知道关于它的新问题是否会受到好评。

    【讨论】:

    • 我看到了,esModuleInterop 在编译后的文件中增加了一个辅助函数。 __importDefault = function (mod) { return (mod && mod.__esModule) ?模组:{“默认”:模组}; };然后将 Vue 导入转换为 { "default" : Vue }。谢谢马特。
    猜你喜欢
    • 2018-07-21
    • 2021-01-10
    • 2021-12-16
    • 2020-12-25
    • 2021-04-26
    • 2021-01-10
    • 2021-07-08
    • 2020-06-14
    • 2021-12-22
    相关资源
    最近更新 更多