TypeScript-导入之间的差异。。。和导入{…}(带花括号)

TypeScript-导入之间的差异。。。和导入{…}(带花括号),typescript,import,Typescript,Import,从Java到TS,我省略了导入类型周围的{…} import DiscriminatorMappingData from './DiscriminatorMappingData'; 而不是 import {DiscriminatorMappingData} from './DiscriminatorMappingData'; 看 我读过文档,不太懂。我只是从中了解到,当我只需要文件中的一种类型时,我可以省略{} 但是,这会导致奇怪的错误,如“未知名称”或意外的类型不兼容 那么,简单地说,有什

从Java到TS,我省略了导入类型周围的
{…}

import DiscriminatorMappingData from './DiscriminatorMappingData';
而不是

import {DiscriminatorMappingData} from './DiscriminatorMappingData';

我读过文档,不太懂。我只是从中了解到,当我只需要文件中的一种类型时,我可以省略
{}

但是,这会导致奇怪的错误,如“未知名称”或意外的类型不兼容


那么,简单地说,有什么区别呢?

TypeScript规范中涵盖了两个
导入
声明之间的区别。从§11.3.2开始:

该表格的进口报关单

从“mod”导入d

与进口报关单完全相同

从“mod”导入{defaultasd}

因此,只有在导入作为模块的
default
实体导出的内容时(使用
export default
声明,每个模块只能有一个声明),才可以省略大括号。您在
导入
声明中提供的名称将成为该导入实体的别名

导入任何其他对象时,即使只是一个实体,也需要提供大括号


TypeScript手册的这一部分有几个例子。

这是以
析构函数
格式导入的。本质上是将我们希望从定义文件导入的所有实体分组

如果您熟悉其他编程语言,您可能会熟悉解构的概念。实际上,
解构
是以的形式添加的,作为
es6
的一部分


导入重组支持最初是在年的TypeScript中提出的,但后来被分组在跟踪所有
es6模块的
默认导入需要不带花括号。下面的计算器函数示例很容易理解

// Calculator.ts

export default function plus() { }    // Default export 

export function minus() { }           // Named export

export function multiply() { }        // Named export

默认导入:无花括号
plus
不应该用大括号括起来,因为它是使用
default
关键字导出的


命名导入:带花括号
应该在花括号内,因为它们仅使用
导出
关键字导出。请注意,
plus
位于花括号之外


默认导入的别名 如果要为
默认导入使用别名,可以使用大括号或不使用大括号:

// CalculatorTest.ts

import { default as add, minus, multiply } from "./Calculator"

现在,
plus()
函数变为
add()
。这是因为每个模块只允许一个默认导出


就这样!希望有帮助

// CalculatorTest.ts

import plus, { minus, multiply } from "./Calculator"
// CalculatorTest.ts

import { default as add, minus, multiply } from "./Calculator"
// CalculatorTest.ts

import add, { minus, multiply} from './Calculator'