Javascript 在Typescript 2.7.2中编写Common.js模块-编译问题
我对Typescript和Javascript也是完全陌生的,所以这无疑是个棘手的问题。我正在看一些关于编写模块的Typescript 2.0教程。在typescript中,作者描述了ES6模块的导入/导出方法,以及CommonJS、AMD和其他导入/导出方法 然而,在我的Javascript 在Typescript 2.7.2中编写Common.js模块-编译问题,javascript,node.js,typescript,Javascript,Node.js,Typescript,我对Typescript和Javascript也是完全陌生的,所以这无疑是个棘手的问题。我正在看一些关于编写模块的Typescript 2.0教程。在typescript中,作者描述了ES6模块的导入/导出方法,以及CommonJS、AMD和其他导入/导出方法 然而,在我的tsconfig.json中,似乎可以指定编译时要使用的模块处理程序:AMD、CommonJS等 因此,我的困惑是,我是否可以使用标准ES6语句和import{}…,编写导入/导出,然后在编译时将它们转换为适当的CommonJ
tsconfig.json
中,似乎可以指定编译时要使用的模块处理程序:AMD、CommonJS等
因此,我的困惑是,我是否可以使用标准ES6语句和import{}…
,编写导入/导出,然后在编译时将它们转换为适当的CommonJS或RequireJS语法?或者我是否需要在typescript中编写适当的CommonJS/RequireJS等语法,然后编译步骤将使用我生成的任何语法
我可以用标准ES6语句编写导入/导出吗
导入{}…,然后将它们转换为相应的CommonJS
还是编译时的RequireJS语法
没错,import
和export
是TypeScript语言的一部分,它们实际上与ES6中的import
和export
完全相同
TypeScript将根据tsconfig.json中module
和target
设置的组合编译它们-如果target
是es6
或更高版本(或者如果module
本身是es6
),则导入
和导出
将保留在生成的javascript中,否则,它们将转换为AMD或commonJS语法
我可以用标准ES6语句编写导入/导出吗
导入{}…,然后将它们转换为相应的CommonJS
还是编译时的RequireJS语法
没错,import
和export
是TypeScript语言的一部分,它们实际上与ES6中的import
和export
完全相同
TypeScript将根据tsconfig.json中module
和target
设置的组合编译它们-如果target
是es6
或更高版本(或者如果module
本身是es6
),则导入
和导出
将保留在生成的javascript中,否则,它们将被转换为AMD或commonJS语法。是的,它影响生成的代码,而不是您应该如何编写代码
作为学习练习,我建议查看每个值的输出:None
,CommonJS
,AMD
,System
,UMD
,ES6
,ES2015
和ESNext
请注意,某些编译器选项在某些配置中不可用:
outFile
只能与AMD
或System
- 但是,当瞄准
ES5
或更低级别时,可以使用ES6
/ES2015
是的,它影响生成的代码,而不是您应该如何编写代码
作为学习练习,我建议查看每个值的输出:None
,CommonJS
,AMD
,System
,UMD
,ES6
,ES2015
和ESNext
请注意,某些编译器选项在某些配置中不可用:
outFile
只能与AMD
或System
- 但是,当瞄准
ES5
或更低级别时,可以使用ES6
/ES2015
好的,太好了。哇,这让我困惑不已。谢谢你的帮助,很好。哇,这让我困惑不已。感谢您的帮助。不确定您所说的“ES6和ES2015只能在针对ES5或更低版本时使用”是什么意思。这与此无关。还有“ES6===ES2015”对不起,我的意思是写“可能被使用”。我已经更新了我的答案。这更好,但仍然不太正确。--target
和--module
选项根本不相互依赖,但这使它们听起来像是相互依赖的。此外,es6和es2015在字面上是相同的,因此您不应该将它们单独列出,好像它们有不同的格式。只是命名法改变了。只需将其称为es2015,因为这是官方名称。想到--目标es3--模块esnext
肯定会让人困惑,但这是完全可能的。不确定“ES6和es2015只能在目标ES5或更低版本时使用”。这与此无关。还有“ES6===ES2015”对不起,我的意思是写“可能被使用”。我已经更新了我的答案。这更好,但仍然不太正确。“code>--target
和--模块
选项根本不相互依赖,但这使听起来像它们一样。此外,es6和es2015在字面上是相同的,因此您不应该将它们单独列出,好像它们有不同的格式。只是命名法改变了。只需将其称为es2015,因为这是官方名称。想到--目标es3--模块esnext
肯定会让人困惑,但这是完全可能的。