[TypeScript | 에러] Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'.

최자은·2023년 3월 19일
1

타입스크립트

목록 보기
1/5

1. 문제발생

CNA + ts로 미니 프로젝트를 진행하던 중, interface로 타입을 지정한 파일들을 폴더별로 나눠 저장한 후, 해당 파일들 안에서 export {} 를 해줬다.
그런데, 이후 컴파일을 해보니 다음과 같은 에러 메세지가 떴다.

"Re-exporting a type when the '--isolatedModules' flag is provided requires using 'export type'."

2. 문제 해결

에러 메세지를 해석해보면 "isolatedModules 플래그가 제공될 경우, type을 다시 내보려면 'export type'을 사용해야 한다."고 되어있다. 그래서 나는 아래 방법으로 문제를 해결했다.

1) export type
TS 버전을 찾아보면 3.8 버전부터 type-only imports와 exports를 위해 type 이란 것을 붙여야 한다고 나와있다. 그래서 type, interface는 import, export시에 type을 명시해준다.

interface PersonType {
	name: string, age: number
}

interface AnimialType {
	type: string, age: number
}

// 타입이 지정된 type, interface 는 export 시에 type이라고 명시
export type {
  PersonType,
  AnimialType  
}

2) isolatedModules 속성 false로 변경
-isolatedModules : 추가 검사를 수행하여 별도의 컴파일

isolatedModules 속성에서 문제가 발생한듯하여, ts.config 파일을 살펴보니 해당 속성은 "true"로 지정되어 있었다.
해당 속성에 대해 찾아본 내용은 아래와 같다.

  • isolatedModules을 true로 설정하면 프로젝트 내에 모든 각각의 소스코드 파일을 모듈로 만들기를 강제한다.
  • 소스코드 파일에서 import, export를 사용하면 해당 파일은 모듈이 된다.
  • 만약 import, export를 하지 않는다면, 그 파일은 전역 공간으로 정의된다. 그래서 isolatedModules 속성이 true로 되어 있다면, 모듈로 소스코드를 작성하지 않을 경우 에러를 출력한다.
  • 만약, babel과 같은 외부 도구를 사용한다면 isolatedModules를 true로 설정하는 것이 좋다.

최종적으로 "false"로 바꾼 후 다시 컴파일 해보니 에러가 사라진 것을 확인할 수 있었다.

profile
모든 과정을 기록하며 꾸준히 성장하고 실수를 반복하지 말자 !

0개의 댓글