web-dev-qa-db-ja.com

TypeScript-import ...とimport {...}の違い(中括弧付き)

Java= to TS)から、インポートされた型の周りの{...}を省略しました。

import DiscriminatorMappingData from './DiscriminatorMappingData';

の代わりに

import {DiscriminatorMappingData} from './DiscriminatorMappingData';

TypeScript-クラスをマップ値として保存しますか? を参照してください。

私はドキュメントを読みましたが、あまり理解していませんでした。ファイルから1つのタイプのみが必要な場合は、{}を省略できることだけを考えました。

それで、違いは何ですか、簡単に言えば?

41
Ondra Žižka

2つのimport宣言の違いは、TypeScript仕様でカバーされています。 §11.3.2から インポート宣言

フォームのインポート宣言

import d from "mod";

インポート宣言とまったく同じです

import { default as d } from "mod";

したがって、モジュールのdefaultエンティティとして(export default宣言で)エクスポートされたものをインポートする場合は、中括弧onlyを省略します。モジュールごとに1つしか存在できません)。 import宣言で指定した名前は、インポートされたエンティティのエイリアスになります。

他の何かをインポートするときは、それがただ1つのエンティティであっても、中括弧を指定する必要があります。

TypeScriptハンドブックの Default exports セクションには、いくつかの例があります。

53
Michael Liu

これは、destructruring形式のインポートです。基本的に、インポートするすべてのエンティティをグループ化するfrom定義ファイル。

他のプログラミング言語に精通している場合は、破壊の概念に精通している可能性があります。実際、destructuringes6の一部として assignments の形式で追加されました。

インポートの再構築のサポートは、最初に このGithubチケット のTypeScriptで提案されましたが、その後すべてのes6 modulesを追跡していた このチケット の下にグループ化されました。

2
dimitrisli