일반 js파일 등에 있던 변수를 사용 시 에러나지 않도록 재정의할 때 사용
declare let 변수 :타입;
- declare가 붙은 코드들은 js로 변환되지 않는다.
👉🏻 컴파일러에게 힌트를 주는 역할의 코드이기 때문
📌 tsconfig.json
에서 allowJS: true
로 설정하면 js파일도 타입지정이 알아서 implicit 하게된다.
ts파일끼리 변수를 가져다 쓰고 싶을 경우, import/export해서 쓰면 되지만,
ts파일은 ambient module(글로벌 모듈)이므로 ⭐️ import/export없이도 모든 ts파일에서 그냥 가져다 쓸 수 있다.
📌 다른 파일에 영향을 끼치지 않기 위해 로컬모듈로 만들려면? import, export 키워드를 쓰면 된다.
👉🏻 ts파일 내에 import/export키워드가 하나라도 있으면 그 파일은 로컬모듈이 되므로, 공유할 변수는 export해주고 사용할 곳에서 import해줘야함.
로컬모듈에서 전역변수를 만들고 싶으면
declare global {}
에 생성
👉🏻 모든 파일에서 해당 변수 사용 가능해짐
- global이라는 이름의 namespace에 추가된다고 볼 수 있다.
- 타입만 저장할 수 있는 파일형식
- 로컬모듈이다.
namespace
에 담거나,import * as
해서 사용tsconfig.json
에서 declaration: true
로 설정하면 ts파일 저장 시 자동으로 해당 ts파일의 d.ts파일이 생성된다.프로젝트 내에 타입저장용 폴더 생성 후, tsconfig.json
에서 typeRoots: [해당폴더 경로]
옵션을 추가하면 ts파일 작성 시 타입이 없으면 자동으로 해당 폴더 내에서 타입을 찾아서 적용해준다.
🔗 DefinitelyTyped: 주로 쓰는 라이브러리를 모아놓은 github repository
🔗 @types 라이브러리: 타입정의된 npm패키지를 찾아서 npm으로 설치하여 사용할 수 있다.
🌱 npm으로 설치하면 node_modules/@types경로에 설치가 되고, 만약 "typeRoots"옵션이 있는 경우에는 해당경로도 추가해줘야 한다.