import React from 'react';
import * as React from 'react';
각각 Import 구문이 다른 이유는 뭘까용?
우선, command+'react'를 눌러 index.d.ts file로 들어가보쟈.
들어가서 확인해보면, react가 우리가 흔히 쓰던 export default가 아닌
export as namespace
로 되어있다.
default export가 없으니 어떤 것을 기본으로 받아와야 하는 지 모르기 때문에 오류가 뜨는 것이다.
그렇기 때문에, namespace 형태로부터 받아오기 위해 * as React
라고 사용하는 것이다.
참고!!
처음에 해보면 에러가 뜬다.
commonJS 모듈을 받아오는 키워드인 require
를 사용하면 에러가 발생하지 않는다. ES6 문법인 import 구문을 사용할 때는 에러가 발생한다.
에러를 한번 확인해 보자.
esModuleInterop 플래그를 사용하는 경우에만 기본 가져오기와 함께 사용할 수 있다고 한다.
여기서 esModuleInterop은 commonJs 모듈을 ES6사양에 준수하여 받아올 수 있게 해준다.
즉, 이 플래그를 키면 자동으로 다음과 같이 변환하여 받아온다는 얘기다.
tsconfig.json에 들어가봐....
👩🔧 tsconfig.json
디렉토리에 tsconfig.json 파일이 있다면 해당 디렉토리가 TypeScript 프로젝트의 루트가 됩니다.
tsconfig.json 파일은 프로젝트를 컴파일하는 데 필요한 루트 파일과 컴파일러 옵션을 지정합니다.
TS 핸드북 참고
저기 보이는 esModuleInterop: true
로 되어있는 것이 TS에서의 import 구문을 JS처럼 써도 에러가 안 뜨게 만들어 주는 것이야..!
모듈의 세계 참 신기하다! 배울 게 너무너무 많고 궁금한 것도 많다 !!!
우와 대박 짱짱 도움돼요 좋은 정보 많이 얻고갑니다!!