2016-08-02 4 views
26

Java에서 TS로 와서 가져온 유형을 중심으로 {...}을 생략했습니다. 대신 TypeScript - 가져 오기 ... 및 가져 오기 {...} (중괄호 사용)의 차이

import {DiscriminatorMappingData} from './DiscriminatorMappingData'; 

import DiscriminatorMappingData from './DiscriminatorMappingData'; 

TypeScript - storing a class as a map value?를 참조하십시오.

설명서를 읽었지만 이해할 수 없었습니다. 파일에서 하나의 형식 만 필요로 할 때 {}을 생략 할 수 있습니다.
그러나 "알 수없는 이름"과 같은 이상한 오류 또는 예기치 않은 유형의 비 호환성이 발생했습니다.

그래서 차이점은 무엇입니까?

답변

28

두 개의 import 선언의 차이점은 TypeScript 사양에서 다룹니다. §11.3.2, Import Declarations에서 :

형태

import d from "mod";

의 수입 신고는 당신이

import { default as d } from "mod";

따라서 수입 신고 정확히 동일합니다 중괄호를 생략 할 것입니다 모듈의 default 엔터티 (모듈 당 하나만있을 수있는 export default 선언이 있음)로 내 보낸 항목을 가져올 때. import 선언에 입력 한 이름은 해당 가져온 엔티티의 별칭이됩니다.

다른 항목을 가져올 때 하나의 항목 일지라도 중괄호를 입력해야합니다.

TypeScript 핸드북의 Default exports 섹션에는 몇 가지 예가 있습니다.

1

이것은 destructruring 형식의 가져 오기입니다. 본질적으로 우리가 가져올 모든 엔티티를 그룹핑 함 from 정의 파일.

다른 프로그래밍 언어에 익숙하다면 구조적 개념을 잘 알고있을 것입니다. 실제로 destructuring은 의 형식으로 es6의 일부로 추가되었습니다.

가져 오기 구조 조정 지원은 TypeScript에서 this Github ticket에 처음 제안되었지만 을 모두 추적하는 this ticket 아래에 그룹화되었습니다.

관련 문제