- 상기 내용을 살펴보면 말 그대로 (window as any)를 피하자, 사용하지 말자라고 하며 대안을 제시해 주고 있다.
1) 지양 해야할 내용
// 하기 내용은 지양 하도록 한다.const myGlobal = (windowas any).__MY_GLOBAL__// ^? const myGlobal: any
2) 대안으로 제시하는 방법
- 하기와 같이 d.ts 파일에 확장하려는 속성(함수 또는 변수)을 declare(선언) 하여 사용 하도록 제안하고 있고, 해당 방법을 사용해보도록 하자.
//.d.ts를 정의 하여 사용하는 방법 제안// global.d.ts
declare global {
interface Window {
__MY_GLOBAL__: number
}
}
export {} // Needed to augment global scope// main.tsconst myGlobal = window.__MY_GLOBAL__// ^? const myGlobal: number ✅
2. global.d.ts
- CRA에선 조금더 편하게 다른 방법을 사용할 수 있긴 하지만, 현재 Typescript 진영에선 global.d.ts를 권고 하는것을 확인 하였으니 해당 방법을 바로 사용하는 방법을 알아 보자.
- cra(create-react-app)환경에서는 global.d.ts 파일만 생성하면 안된다는 내용이 많아, 하기 2.1의 내용을 추가 하였다.