作者回复: 背景:很多库使用了 CommonJS 的导出方式,如 module.exports=a,这样会导致使用ES的方式导入时失败,如 import a from 'X'。因为ES会默认访问 a 的 default 属性。TypeScript 为了兼容,引入了 esModuleInterop 选项,在编辑时自动添加default属性。
用法:当 module 指定为 commonjs 时,设置 esModuleInterop 为 true 即可。
作者回复: 课程在这里有处遗漏,说明一下:
在命令行中指定了 target 为 es6,tsc 就会默认使用 Classic 模块解析策略,这个策略对于
import * as t from "@babel/types";
这种非相对路径的导入,不能正确解析。
解决方法就是指定解析策略为 Node,比如:
tsc ./a.ts -t es6 --moduleResolution node
关于解析策略,详见第27讲。
作者回复: 第一种写法是将所有用export导出的成员绑定在React上,导入后用React.xxx访问;第二种仅是导出默认的(export default)
作者回复: 嗯,命令行中 target为es3/5,module默认为commonjs
作者回复: 安装一下 @types/source-map 就行了
作者回复: 这里的对象是指 {b, c} ,即 {b: b, c: c},没有问题
作者回复: 这节课运行的是 ts-base 工程,需要先全局安装ts-node,并不会依赖babel啊
作者回复: 我很想回答你,但为什么不自己手动试一下呢:),这样理解才深刻,然后遇到问题再来问。
作者回复: 文件中只要有 import 或 export ,这个文件就是一个模块