TypeScript Deep Dive
  • README
  • 시작하기
    • 왜 타입스크립트인가
  • 자바스크립트
    • 비교 연산자
    • 참조 연산자
    • Null vs. Undefined
    • this
    • 클로저
    • Number
    • Truthy
  • 미래의 자바스크립트
    • 클래스
      • 즉시실행함수
    • 화살표 함수
    • 나머지 연산자
    • let
    • const
    • 비구조화 할당
    • 전개 연산자
    • for...of
    • 이터레이터
    • 템플릿 리터럴
    • 프로미스
    • 제네레이터
    • Async Await
  • 프로젝트
    • 컴파일러 제어
      • tsconfig.json
      • 파일 경로 지정
    • 선언
    • 모듈화
      • 파일을 이용한 모듈화
      • globals.d.ts
    • 네임스페이스
    • 동적 표현식 가져오기
  • Node.js 시작하기
  • Browser 시작하기
  • 타입스크립트 타입 시스템
    • 자바스크립트 마이그레이션 가이드
    • @types
    • 주변 선언
      • 파일 선언
      • 변수
    • 인터페이스
    • 열거형(Enums)
    • lib.d.ts
    • 함수
    • 콜러블(Callable)
    • 타입 표명(Type Assertion)
    • 신선도(Freshness)
    • 타입 가드
    • 리터럴(Literal)
    • 읽기 전용(readonly)
    • 제네릭
    • 타입 인터페이스
    • 타입 호환성
    • Never 타입
    • 구별된 유니온
    • 인덱스 서명(Index Signature)
    • 타입 이동하기
    • 예외 처리
    • 믹스인(Mixin)
  • JSX
    • React
    • Non React JSX
  • Options
    • noImplicitAny
    • strictNullChecks
  • 타입스크립트 에러
    • 에러 메세지
    • 공통 에러
  • NPM
  • 테스트
    • Jest
    • Cypress
  • Tools
    • Prettier
    • Husky
    • ESLint
    • Changelog
  • 팁
    • 문자열 Enums
    • 타입 단언
    • 상태 저장 함수
    • 커링
    • 제네릭 타입 예시
    • 객체 타입 설정
    • 유용한 클래스
    • Import / Export
    • 속성 Setters
    • outFile 주의사항
    • 제이쿼리 팁
    • 정적 생성자
    • 싱글톤 패턴
    • 함수 파라미터
    • 토글 생성
    • Import 여러개 하기
    • 배열 생성
    • 생성자에서 타입정의
  • 스타일 가이드
  • 타입스크립트 컴파일러 구조
    • Program
    • AST
      • TIP: Visit Children
      • TIP: SyntaxKind enum
      • Trivia
    • Scanner
    • Parser
      • Parser Functions
    • Binder
      • Binder Functions
      • Binder Declarations
      • Binder Container
      • Binder SymbolTable
      • Binder Error Reporting
    • Checker
      • Checker Diagnostics
      • Checker Error Reporting
    • Emitter
      • Emitter Functions
      • Emitter SourceMaps
    • Contributing
Powered by GitBook
On this page

Was this helpful?

  1. 팁

Import 여러개 하기

배럴은 여러 모듈의 익스포트를 편리하게 하나의 모듈로 모으는 방법입니다. 배럴은 다른 모듈의 익스포트를 모아서 다시 익스포트하는 모듈 파일입니다.

라이브러리에 다음과 같은 클래스 구조가 있다고 생각해보세요:

// demo/foo.ts
export class Foo {}

// demo/bar.ts
export class Bar {}

// demo/baz.ts
export class Baz {}

배럴이 없으면 다음과 같이 세 번 임포트해야 합니다:

import { Foo } from '../demo/foo';
import { Bar } from '../demo/bar';
import { Baz } from '../demo/baz';

대신 demo/index.ts 라는 배럴을 다음과 같은 내용으로 만들 수 있습니다:

// demo/index.ts
export * from './foo'; // 이 모듈의 모든 익스포트를 다시 익스포트
export * from './bar'; // 이 모듈의 모든 익스포트를 다시 익스포트
export * from './baz'; // 이 모듈의 모든 익스포트를 다시 익스포트

이제 사용자는 필요한 것들을 배럴로부터 임포트할 수 있습니다:

import { Foo, Bar, Baz } from '../demo'; // demo/index.ts 를 가리킴

이름 붙인 익스포트

익스포트를 * 로 하는 대신 이름을 붙여서 익스포트할 수 있습니다. 예를 들어 baz.ts에 다음과 같은 함수가 있다면:

// demo/foo.ts
export class Foo {}

// demo/bar.ts
export class Bar {}

// demo/baz.ts
export function getBaz() {}
export function setBaz() {}

getBaz / setBaz 라고 익스포트하지 않고 변수에 담아서 익스포트하려면 아래 나온 것처럼 먼저 이름을 붙여서 임포트한 다음 익스포트하면 됩니다:

// demo/index.ts
export * from './foo'; // 이 모듈의 모든 익스포트를 다시 익스포트
export * from './bar'; // 이 모듈의 모든 익스포트를 다시 익스포트

import * as baz from './baz'; // 이름으로 임포트
export { baz }; // 그 이름을 익스포트

다음과 같이 사용하게 됩니다:

import { Foo, Bar, baz } from '../demo'; // demo/index.ts 를 가리킴

// usage
baz.getBaz();
baz.setBaz();
// etc. ...
Previous토글 생성Next배열 생성

Last updated 3 years ago

Was this helpful?