[TIL] 2023/10/11

yongkini ·2023년 10월 11일
0

Today I Learned

목록 보기
161/173
post-thumbnail

Today I Learned

window 객체에 바인딩해서 쓰기

: 프로젝트를 진행하다보면 전역 객체에 프로퍼티를 할당해서 쓰는 경우가 있다. 이 때, 타입스크립트를 쓰는 프로젝트라면 이에 대해서 에러가 발생하게 된다.

Property 'somePropertyName' does not exist on type 'Window & typeof globalThis'.

보통은 위와 같은 에러를 낸다. 이 에러를 잡기 위해서는 window 단에 접근해서 해당 타입들을 지정해 줘야한다.

export {};

declare global {
  interface Window {
    somePropertyName : string;
  }
}

위와 같이 해주면 해결된다. 이 때, export {} 를 해준건

Augmentations for the global scope can only be directly nested in external modules or ambient module declarations.ts

위와 같은 에러를 리턴하기 때문이다(export {} 를 안해줬을 때). 일종의 트릭 같은건데 모듈처럼 보이게 만든거다. export를 써서(결국 빈객체를 export하지만).

profile
완벽함 보다는 최선의 결과를 위해 끊임없이 노력하는 개발자

0개의 댓글