moduleMath{exportfunctionadd(x,y){...}}之后
"usestrict";varmyColors=[0/*Red*/,1/*Yellow*/,2/*Blue*/];代码语言:javascript复制//报错constenumColor{Red,Yellow,Blue="blue".length};console.log(Colors.RED);7.枚举的使用场景以下代码存在的问题:
你可能会写出下面这样的代码:将命名空间导出
exportnamespaceShapes{exportclassTriangle{/*...*/}exportclassSquare{/*...*/}}代码语言:javascript复制import*asshapesfrom"./shapes";lett=newshapes.Shapes.Triangle();不应该在模块中使用命名空间或者说将命名空间导出:使用命名空间是为了提供逻辑分组和避免命名冲突,模块文件本身已经是一个逻辑分组,并且它的名字是由导入这个模块的代码指定,所以没有必要为导出的对象增加额外的模块层。
下面是改进的例子:
exportclassTriangle{/*...*/}exportclassSquare{/*...*/}代码语言:javascript复制import*asshapesfrom"./shapes";lett=newshapes.Triangle();或者
配置dom.iterable和downlevelIteration就可以正常运行tsconfig.json
{/*当目标是ES5或ES3的时候提供对for-of、扩展运算符和解构赋值中对于迭代器的完整支持*/"downlevelIteration":true,"lib":["dom","es5","es6","es7","dom.iterable"]}注意:如果未指定--lib,则会注入默认的库列表。注入的默认库是:For--targetES5:DOM,ES5,ScriptHostFor--targetES6:DOM,ES6,DOM.Iterable,ScriptHost
输入
输出
输出文件扩展名
preserve
.jsx
react
React.createElement("div")
.js
react-native
解决办法:给这些非JS模块添加申明
{"presets":["@babel/preset-react","@babel/preset-env"],"plugins":[["import",{"libraryName":"antd","libraryDirectory":"es","style":"css"/*`style:true`会加载less文件*/}]]}tsconfig.json
{"compilerOptions":{"target":"es5","jsx":"preserve",//保留jsx...}