为什么TypeScript编译器向我的导入添加“默认”?

时间:2019-05-07 01:20:02

标签: typescript

这是我的代码:

import lodash from "lodash"
lodash.sampleSize([1,2], 1);

这是生成的代码:

const lodash_1 = require("lodash");
lodash_1.default.sampleSize([1,2], 1);

在另一个问题中,我提出了将lodash重命名为lodash_1的令人困惑的问题,但是我的问题是,当TypeScript很容易检测到所需npm上没有这样的“ default”时,为什么要添加“ default”模块,在这种情况下为lodash?

这有点令人生气,因为当我编写代码时,它只有在没有默认值的情况下才有效,并且我会从TypeScript服务获得所有帮助,但是只有在我编译时,它才会抛出错误,因为“默认”会不存在。为什么在编译过程中添加TypeScript?为什么要强迫我在开发期间不使用默认值,然后在编译期间中断呢?我好伤心。

1 个答案:

答案 0 :(得分:1)

  

但是我的问题是TypeScript为什么要添加“默认”

因为这就是x中的import x as "x"所映射的。其默认导入。

  

这有点令人生气,因为当我编写代码时,只有在没有默认设置的情况下,它才有效,

如果您的"esModuleInterop": true中有tsconfig.json,它将起作用

更多

仅当您不使用 native es模块时才需要该标志。今天的大多数模块都不是本机es模块,实际上不是commonjs模块。因此,它是默认情况下应启用的标志。