typescript
- 왜 필요 할까?
- 타입에러를 사전에 방지 할 수 있다.
- 객체가 호출 가능한 프로퍼티인지 미리 확인 가능.
- 자바스크립트는 동적 타입 언어이기 때문에 코드가 실행되어야만 어떤일이 벌어지는지 비로소 확인이 가능하다.
- 이는 결과를 예측하기 어려운 코드를 만든다.
- 따라서, 정적 타입 시스템을 사용하여 코드가 실행되기 전에 코드에 대해야 미리 예측하는 것.
- 오타나 undefined로 나오는 존재하지 않는 프로퍼티를 사전에 감지 할수 있다.
- 호출되지 않은 함수를 발견 하거나 기본적인 논리 오류를 발견할 수 있다.
- 프로그래밍 툴로서 실수를 저지르는 바로 그 순간 이를 막아준다.
- IDE와 연계하여 코드 자동 완성이나 오류메세지를 표시해주는 기능들을 제공 해줄수 있다.
- 오류 발생 시키기
- 오류를 발생 시켜도 tsc 명령어를 통해 실행시키면 그대로 js파일로 컴파일 된다.
- 왜? 대부분의 경우 개발자가 Typescript보다 더 잘 알고 있을 것이라는 생각이 타입스크립트의 핵심 가치이기 때문.
- 보다 더 엄격한 검사가 필요하다면 --noEmitOnError 옵션을 사용하면 된다.
- 엄격도
- CLI dptj --strict플래그 설정 or tsconfig.json 에 "strict":true를 설정하면 모든 플래그를 활성화한 상태로 작성 된다.
- noImplicitAny
- TypeScript는 몇몇ㅊ의 경우 타입을 추론하지 않고 가장 관대한 타입인 any로 간주 된다.
하지만, any를 사용하면 애초에 TypeScript를 사용하는 이유가 무색해진다.
noImplicitAny 플래그를 활성화하면 타입이 any로 암묵적으로 추론되는 변수에 대해 오류를 발생 시킨다.
- strictNullChecks
- null과 undefined를 보다 명시적으로 처리하게 하고, null과 undefined의 처리를 잊어서 생기는 버그들을 막도록 도와준다.