为什么打字稿更喜欢"import * from X"?



我是Typescript的新手。

我遇到了一个重要问题。

import isEmpty from 'lodash/isEmpty'

失败。。isEmpty.default is not a function

我偶然发现了这个。。

https://github.com/lodash/lodash/issues/3542

并添加a..

import * as isEmpty from 'lodash/isEmpty'

确实修复了。

但为什么呢?

为什么Typescript需要这样的导入?我正在努力理解为什么这是必要的,以及幕后发生了什么。

您的问题是只能使用第一个示例中的语法导出默认函数/类。

每个文件只能有一个默认导出,如果您查看源文件,它将看起来像

export default {function/class}

还可以编写源代码以允许导出非默认方法,例如

export {function/class}

这些导出不一定是文件名。导出本身可以命名为不同的名称,即导出lodash别名为_。

如果你想从库中提取一个非默认方法,并且该方法在库源代码中被命名为导出,如果你使用的是es6 ,你可以使用析构函数语法

import { isEmpty } from 'lodash'

在第二个示例中,将包别名为isEmpty。理想情况下,使用主lodash包中的destructuring方法来使用不是默认导出的单个方法/函数,或者导出整个默认值并调用该方法。即

import _ from 'lodash'
_.isEmpty(var);

最新更新