[typescript] declare

소면(Somyeon)
2 min readMar 11, 2021

--

declare

declare 키워드는 컴파일러에게 해당 변수나 함수가 이미 존재한다는 것을 알리는 역할을 한다. 다른 영역의 코드에서 declare로 선언된 해당 변수나 함수를 참조할 수 있으며 declare로 선언된 부분은 javascript로 컴파일되지 않는다.

사용 예시

컴파일러가 인식하지 못하는 자바스크립트 파일을 웹사이트에 추가했다고 하자. 아마 foo.com과 같이 다른 도메인에서 온 스크립트 파일일 수도 있다. 해당 스크립트 파일은 실행되면서 api 메소드를 생성하고 이를 글로벌 스코프에 있는 fooSdk 식별자에 할당한다.

만약 typescript 코드에서 fooSdk.doSomething()을 호출한다면 컴파일러는 해당 변수가 존재하는지 알지 못하기에 컴파일 에러를 발생시킬 것이다.

이 때 declare 키워드를 이용하면 해당 변수의 존재와 타입을 알릴 수 있다. 컴파일러는 해당 선언문을 다른 코드의 정적 타입 확인을 위해 사용할 뿐 javascript로 컴파일 하지 않는다.

declare const fooSdk = { doSomething: () => boolean }

같은 맥락에서 동적으로 생성되는 class의 프로퍼티에도 declare 키워드를 선언할 수 있다. 컴파일러는 해당 프로퍼티를 만나도 코드 어딘가에 해당 프로퍼티를 생성하는 코드가 있을 것이라고 추측하며 에러를 발생시키지 않는다.

stackoverflow에서 declare에 대한 답변을 번역한 글입니다.

https://stackoverflow.com/questions/43335962/purpose-of-declare-keyword-in-typescript

--

--

No responses yet