TypeScript Academy · 강의

형식 전용 가져오기 및 내보내기

실행 시 오버헤드를 피하기 위해 import type을 사용합니다.

레슨 3/413개 단계

형식 전용 가져오기 및 내보내기은(는) CoddyKit의 무료 TypeScript Academy 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 TypeScript Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

시작하기

타입 전용 가져오기와 내보내기(import type / export type)는 TypeScript 3.8에서 도입되었습니다. 이를 통해 개발자는 실행 시 종속성과 타입 전용 항목을 명시적으로 구분할 수 있습니다.

타입 전용이 중요한 이유

일반 가져오기에는 실행 시 코드가 포함될 수 있습니다. 타입만 필요하다면 컴파일된 출력에서 가져오기를 완전히 제거할 수 있습니다.
import { User } from './models'; // includes runtime binding
import type { User } from './models'; // compile-time only, erased

import type 문법

`import` 키워드 뒤에 `type`을 배치합니다. 가져온 이름을 값으로 사용할 수는 없습니다.
import type { ApiResponse } from './api-types';

function handleResponse(res: ApiResponse<User>): void {
  // ApiResponse used as type annotation only
}

export type 문법

`export type`을 사용하여 내보내기가 타입 전용임을 명시적으로 표시합니다.
// user.types.ts
export type UserId = string;
export type { User, UserRole };

인라인 타입 가져오기

TypeScript 4.5 이상에서는 일반 가져오기 문 안에서 개별 가져오기를 타입 전용으로 표시할 수 있습니다.
import { type User, createUser } from './user';
// User is type-only, createUser is a runtime value

순환 종속성 해결

타입 전용 가져오기는 실행 시 바인딩을 만들지 않으므로 순환 종속성 문제를 해결할 수 있습니다.

verbatimModuleSyntax

TypeScript 5.0에서는 `verbatimModuleSyntax`가 도입되었습니다. 이 옵션을 활성화하면 번들러의 혼동을 방지하기 위해 타입 전용 가져오기에 반드시 `import type`을 사용해야 합니다.
// tsconfig.json
{ "compilerOptions": { "verbatimModuleSyntax": true } }

importsNotUsedAsValues

`importsNotUsedAsValues` 컴파일러 옵션은 verbatimModuleSyntax로 대체되었으며, TypeScript가 사용되지 않는 값 가져오기를 처리하는 방식을 제어합니다.

번들러에서의 이점

Vite와 esbuild 같은 번들러는 `import type` 표시를 사용하여 타입 가져오기의 처리를 건너뛰고 빌드 속도를 높입니다.

타입 전용 다시 내보내기

실행 시 모듈을 포함하지 않고 타입을 다시 내보냅니다.
// public-api.ts
export type { User, UserRole } from './internal-user';
export { createUser } from './internal-user'; // runtime

오류: import type을 값으로 사용할 수 없음

타입 전용 가져오기를 실행 시 값으로 사용하면 컴파일 오류가 발생합니다.
import type { User } from './user';
// const u = new User(); // Error — User was imported as type-only

빠른 확인

일반 `import` 대신 `import type`을 사용해야 하는 경우는 언제일까요?

복습

타입 전용 가져오기와 내보내기에는 `import type`과 `export type`을 사용합니다. 이들은 컴파일 시 제거되고, 타입 파일에 대한 실행 시 종속성을 방지하며, verbatimModuleSyntax가 활성화된 경우 반드시 사용해야 합니다.
무료로 시작

AI 튜터와 함께 TypeScript을(를) 배우세요 — 무료

브라우저에서 실제 코드를 작성하고 실행하며, 24/7 AI 튜터로부터 즉각적인 도움을 받고, 웹이나 앱에서 중단한 부분부터 계속 학습하세요.

코스
101
레슨
352

자주 묻는 질문

“형식 전용 가져오기 및 내보내기” 강의는 무료인가요?

네 — “형식 전용 가져오기 및 내보내기” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 TypeScript Academy 강의 전체를 잠금 해제할 수 있습니다. TypeScript Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“형식 전용 가져오기 및 내보내기”에서 뭘 배우나요?

실행 시 오버헤드를 피하기 위해 import type을 사용합니다. 브라우저에서 직접 실행하는 실습 코드로 TypeScript Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

TypeScript Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 TypeScript Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“형식 전용 가져오기 및 내보내기” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 TypeScript Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 TypeScript Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. ES 모듈 문법: import 및 export
  2. 재내보내기 및 배럴 파일
  3. 형식 전용 가져오기 및 내보내기
  4. 네임스페이스와 모듈: 현대적인 사용법
← TypeScript Academy(으)로 돌아가기