程序问答   发布时间:2022-06-02  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

如何解决用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`?

开发过程中遇到用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`的问题如何解决?下面主要结合日常开发的经验,给出你关于用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`的解决方法建议,希望对你解决用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`有所启发或帮助;

正确的方法是继续使用旧的导入语法。新的导入语法仅适用于ES模块,而旧的导入语法仅适用于ES6之前的模块。两者是截然不同的,有意如此。 。

来自功能的设计者:

  • 导出默认声明始终声明一个名为default的导出成员,并始终作为对exports.default的赋值发出。换句话说,export default始终具有ES模块的语义。为了与Babel兼容,我们可以选择__esModule在模块具有默认导出功能时发出标记,但是实际上我们不会将该标记用作任何对象。
  • export =始终将声明替换为要导出的其他实体代替模块本身的声明@H_861_8@module.exports。在使用的模块中包含其他导出是错误的export =。这是现有的TypeScript行为。
  • 使用一个模块export =导出另一模块(是内部或外部模块)可以使用新ES6构建体被导入。特别是,方便的解构导入可以与此类模块一起使用。export =用于导出另一个模块的模式在.d.ts文件中很常见,该文件提供了内部模块的Commonjs / AMD视图(例如angular.d.ts)。

TypeScript编译器在某个时候开始允许import * as foo from 'legacy-module- foo'在某些情况下获取旧版模块的默认导入。 (第15.2.1.16节,“值“ *”表示导入请求是针对目标模块的 名称空间对象。“)。

当您以这种方式导入的旧版模块更新为ES6模块时,这些模块的“默认”导入将停止工作(因为* as foo导入 应该 是在导入名称空间对象),如果您不知道这样做,可能会造成极大的混乱这是一个TypeScript / SystemJs Hack。将来TypeScript对ES规范的重新调整也有可能导致它们中断。

因此,您可能更希望继续使用上述的旧版导入语法来加载旧版模块,以避免使您自己和其他开发人员就您的代码对ES6名称空间导入的工作方式感到困惑,并避免使变更令人困惑。

解决方法

以前我可以做:

import foo = require('foo');

但是现在TypeScript(1.5)支持es6模块语法,在ES6模块语法中实现相同功能的正确方法是什么。

大佬总结

以上是大佬教程为你收集整理的用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`全部内容,希望文章能够帮你解决用于导入commonjs / amd模块的新es6语法,即`import foo = require('foo')`所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。