여기서 고품질 Typescript 선언 파일을 작성하는 방법을 알아봅니다. ReactJS에서 코딩 중이고 SVG 파일을 가져오고 싶은데 IDE/tsc에 문제가 있습니다.
[ts] cannot find module './logo.svg'
빠른 복사 붙여넣기 솔루션을 위해 Stackoverflow를 사용할 때입니다.
하지만 잠시만 기다려 이 파일과 이 파일이 우리에게 어떤 역할을 하는지 이해해 보도록 하겠습니다.
TS/JS에서는 TS/JS로 작성된 앱을 모듈화하기 위해 많은 접근 방식을 취했습니다. 현재 가장 중요한 것은 ESM(일명 ES 모듈, ES6 모듈)입니다. 우리는 일반적으로 구문으로 이를 알고 있습니다.
원래 질문에 답하자면, ECMAScript 2015에 따른 TS/JS에서는 최상위 가져오기 또는 내보내기가 포함된 모든 파일이 모듈로 간주됩니다.
최상위 가져오기 또는 내보내기가 없는 경우:
더 이상 글로벌 네임스페이스 오염이 없습니다. 이는 다음을 의미합니다.
TS 모듈 해석은 import 또는 require 문에서 문자열을 가져와 해당 문자열이 참조하는 파일을 결정하는 프로세스입니다.
TS에는 두 가지 전략이 있습니다.
그나저나 의도적으로 또는 실수로 변경할 수 있는 위치가 많이 있습니다(moduleResolution, baseUrl, paths, rootDirs).
예를 들어 ESM을 활용하도록 앱을 구축하는 경우(컴파일된 버전은 ESM을 사용함)compileOptions.module에서 "NodeNext"를 선택해야 합니다.
참고: 해당 디렉토리 안에 package.json이 있는 경우. 그런 다음 TS는 기본 및 유형을 사용하여 유형을 선택합니다.
여기에서 자세히 알아보세요.
따라서 기본적으로 baseUrl을 기준으로 조회 위치*s*에 가져오기를 다시 매핑하고, 그렇지 않으면 tsconfig 파일에 다시 매핑합니다. 이에 대한 가장 일반적인 사용 사례는 경로 별칭입니다.
[ts] cannot find module './logo.svg'
주의
런타임에는 아무런 의미가 없습니다. 이는 귀하의 소중한 번들러나 컴파일러가 이들을 올바르게 번들링하도록 관리해야 함을 의미합니다. 그리고 경로가 존재하지 않는 곳을 가리키는 경우 NodeJS에서 앱을 실행할 때 앱이 중단됩니다.
팁
대신 package.json의 가져오기(AKA Subpath 가져오기)를 활용할 수 있습니다.
내보낸 JS 출력에 영향을 미치기 위해 다음을 수정할 수 있습니다.
그래서 우리는 TS가 어떻게 생겼는지 전혀 모르는(해당 유형을 확인할 수 없는) .graphql 파일이나 기타 확장자를 가져오고 싶습니다. 이제 TS는 가져온 svg, graphql 또는 기타 파일의 모양을 알고 있습니다.
참조
Bare 지정자: 상대 경로나 절대 경로가 아닙니다 import 문의 모듈 이름입니다. 이는 일반적으로 프로젝트의 node_modules 또는 기타 구성된 위치에 있는 패키지 이름입니다. ↩
위 내용은 TS의 모듈 선언의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!