【问题标题】:Javascript import of Typescript - exporting default objectTypescript的Javascript导入-导出默认对象
【发布时间】:2019-04-03 22:10:10
【问题描述】:

这个问题可能已经有人回答了,但不知道怎么问。

我有一个导出单个类的 Typescript 文件:

export class MyClass {
    ...
}

我有一个 Javascript 文件,可以导入该打字稿的转译版本并使用它:

define('random-source', ['src/my-class'], function(MyClassMod) {
    ...
    var myClass = new MyClassMod.MyClass();
    ...
});

我的问题是:有没有办法编写 Typescript 文件,以便导出的唯一对象是“MyClass”定义?正如您从 Javascript 中的定义中看到的那样,它是作为模块名称导入的,但我必须说“.MyClass”才能访问它。当我有很多带有这样定义的单个类的 Typescript 文件时,它会使 Javascript 代码有点混乱。理想情况下,我想要这样的东西:

define('random-source', ['src/my-class'], function(MyClass) {
    ...
    var myClass = new MyClass();
    ...
});

这可能吗?提前致谢!

【问题讨论】:

  • 如果您使用的是 typescript,为什么要在 javascript 中编写代码?
  • 你可以使用import 吗? typescriptlang.org/docs/handbook/modules.html
  • 我正在开发一个遗留应用程序,其中我们正在编写的新内容是在 Typescript 中并慢慢转换现有的 Javascript 文件。但与此同时,我们现在需要能够将转译的 Typescript 文件拉入遗留的 Javascript 文件中。

标签: javascript typescript import export


【解决方案1】:

其实你是在找一个导出赋值,这会让MyClass成为整个模块的值:

class MyClass {
    // ...
}
export = MyClass;

【讨论】:

  • 谢谢马特!这就是我想要的。我是 Web 开发世界的长期 C++ 新手,我找不到这个看似简单的问题的答案...
【解决方案2】:

似乎您正在寻找默认导出:

export default class MyClass {
    ...
}

【讨论】:

  • 你好。那是行不通的。在我的 javascript 文件中,我需要执行“new MyClassMod.default()”来执行它。
  • @Steve 那是因为您在目标脚本中使用了 AMD 模块。您应该在目标中使用 ES6 模块导入以使其以这种方式工作,或者在 TypeScript 源中使用 AMD 模块。
猜你喜欢
  • 2022-12-07
  • 2018-10-14
  • 2020-04-30
  • 2016-06-19
  • 1970-01-01
  • 1970-01-01
  • 2021-06-01
  • 2017-02-01
  • 1970-01-01
相关资源
最近更新 更多