[TIL] 2023/10/11

yongkini ·2023년 10월 11일

Today I Learned

목록 보기
161/176
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
Web3.0에 관심이 많은 FE 개발자입니다. VPA와 캔들 차트 분석을 기반으로 정량적 트레이딩 시스템을 직접 개발하여 암호화폐를 트레이딩하고 있습니다.

0개의 댓글