반응형
타입 오류가 있는 코드도 컴파일된다.
이펙티브 타입스크립트를 사서 보고있는데, 일단 컴파일과 타입체크는 엄연히 다른 말이라고 한다.
14p
코드에 오류가 있을 때 "컴파일에 문제가 있다" 고 말하는 경우를 보았을 겁니다. 그러나 이는 기술적으로 틀린 말입니다.
엄밀히 말하면 오직 코드 생성만이 '컴파일' 이라고 할 수 있기 때문입니다. 작성한 타입스크립트가 유효한 자바스크립트라면 타입스크립트 컴파일러는 컴파일을 해 냅니다. 그러므로 코드에 오류가 있을 때 "타입 체크에 문제가 있다" 고 말하는 것이 더 정확한 표현입니다.
타입 오류가 있는데도 컴파일 된다는 사실 때문에 타입스크립트가 엉성한 언어처럼 보일 수 있다.
그러나 코드에 오류가 있더라도 컴파일된 산출물이 나오는 것이 실제로 도움이 된다고 한다.
웹 어플리케이션을 만들면서 어느 부분에 문제가 발생했을 때, 타입스크립트는 여전히 컴파일된 산출물을 생성하기 떄문에 문제가 된 오류를 수정하지 않더라도 어플리케이션의 다른 부분을 테스트 할 수 있다.
라고 한다.
다음 코드는 문제가 없는 javascript 코드이다.
let x = "hello"
x = 1234;
console.log(x);
하지만 타입스크립트라면 말이 달라진다.
자동 추론에 의해 x의 타입은 string인데 두번째 줄에 number를 할당하기 때문이다.
실제로 tsc를 돌려보면 다음과 같이 string에 number를 할당할 수 없다는 에러가 뜬다.
하지만 타입오류가 있어도 컴파일되어 test.js가 생성되고 test.js를 실행시켰을때 문제없이 콘솔이 찍히는 것도 볼 수 있다.
이처럼 타입오류가 있어도 타입스크립트는 ts를 컴파일하여 js코드를 만든다.
noEmitOnError
만약 타입오류가 있을 때, 컴파일하지 않으려면 noEmitOnError를 설정하면 된다.
반응형
'개발 > TypeScript' 카테고리의 다른 글
실제 작동하는 Javascript를 무겁게 만드는 enum과 그 대안 : as const를 활용한 객체 (0) | 2023.02.19 |
---|---|
런타임때에 사라지는 타입 (0) | 2023.01.18 |
번역 : The Purpose of 'declare' Keyword in TypeScript (0) | 2022.12.04 |
Generic (0) | 2022.05.09 |
Enum (0) | 2022.05.06 |