Node에서 ESM 사용하기

package.json 에서 "type": "module" 설정을 추가해준다. 대신 이제 import 할때 확장자명 적어줘야한다. 브라우저 호환성?을 위함이라고 한다 (script type=”module"과 관련있는건가?). package.json 의 프로젝트 설정이 아니더라도 일회성으로 하는 법이 있는데 나중에 필요하면 찾아보자.

export, export 규칙

선언문 객체 변수참조
export O O X
export defualt X O O

확장자가 TS가 되면??

이제부터 이야기가 달라진다. import 하는 대상 파일이 ts 파일이라면, 일반적인 JS ESM 규칙이 적용되지만, js 파일이라면 해당 js 파일의 type declaration 파일을 읽는다. noImplicitAnyfalse 라면 상관없이 모듈을 불러오겠지만 옳은 방법은 아니다.

type declaration 파일을 읽는다면, 이제부터 여기서 tsconfig.json 파일의 설정값을 본격적으로 읽어들여 그에맞는 처리를 하게된다.

질문

여기서 이제 js와 ts가 어떻게 맞물려 동작하는지 알게되었다. 그럼 이제 ts만으로 프로그램을 제작할 때, 프로그램에서 전반적으로 사용되는 타입들은 어떤 방식으로 모듈화하여 관리한단 말인가?? index.d.ts 같은걸 써야할까? ~.d.ts 란 js 의 타입 선언 파일이잖아?? 이를 어떻게 응용한단 말인가??

공부할 것