본문 바로가기
개발/TypeScript

타입스크립트는 타입 오류가 있어도 컴파일을 한다.

by 안뇽! 2023. 1. 18.
반응형

타입 오류가 있는 코드도 컴파일된다.

이펙티브 타입스크립트를 사서 보고있는데, 일단 컴파일과 타입체크는 엄연히 다른 말이라고 한다.

 

14p

코드에 오류가 있을 때 "컴파일에 문제가 있다" 고 말하는 경우를 보았을 겁니다. 그러나 이는 기술적으로 틀린 말입니다.
엄밀히 말하면 오직 코드 생성만이 '컴파일' 이라고 할 수 있기 때문입니다. 작성한 타입스크립트가 유효한 자바스크립트라면 타입스크립트 컴파일러는 컴파일을 해 냅니다. 그러므로 코드에 오류가 있을 때 "타입 체크에 문제가 있다" 고 말하는 것이 더 정확한 표현입니다.

타입 오류가 있는데도 컴파일 된다는 사실 때문에 타입스크립트가 엉성한 언어처럼 보일 수 있다.
그러나 코드에 오류가 있더라도 컴파일된 산출물이 나오는 것이 실제로 도움이 된다고 한다.
웹 어플리케이션을 만들면서 어느 부분에 문제가 발생했을 때, 타입스크립트는 여전히 컴파일된 산출물을 생성하기 떄문에 문제가 된 오류를 수정하지 않더라도 어플리케이션의 다른 부분을 테스트 할 수 있다.

라고 한다.

 

다음 코드는 문제가 없는 javascript 코드이다.

let x = "hello"
x = 1234;
console.log(x);

하지만 타입스크립트라면 말이 달라진다.

자동 추론에 의해 x의 타입은 string인데 두번째 줄에 number를 할당하기 때문이다.

 

실제로 tsc를 돌려보면 다음과 같이 string에 number를 할당할 수 없다는 에러가 뜬다.

 

하지만 타입오류가 있어도 컴파일되어 test.js가 생성되고 test.js를 실행시켰을때 문제없이 콘솔이 찍히는 것도 볼 수 있다.

 

이처럼 타입오류가 있어도 타입스크립트는 ts를 컴파일하여 js코드를 만든다.

 


noEmitOnError

만약 타입오류가 있을 때, 컴파일하지 않으려면 noEmitOnError를 설정하면 된다.

 

 

 

반응형