Book
Item 7. 타입이 값들의 집합이라고 생각하기
이번 아이템을 읽으면서 가장 충격적이였던 코드. 타입 PersonSpan은 Person과 Lifespan의 교집합이 아니라 합집합이다. 지금 생각해보면 당연할 수 있는데 처음에 보자마자 당연하게 교집합이라고 생각했다. interface Person { name: string; } interface Lifespan { birth: Date; death?: Date; } type PersonSpan = Person & Lifespan; const ps: PersonSpan = { name: 'Alan Turing', birth: new Date('1912/06/23'), death: new Date('1954/06/07'), }; // OK 왜냐하면 위에서 type연산자는 속성이 아닌 값의 집합에 적용되기 ..
Item 6. 편집기를 사용하여 타입 시스템 탐색하기
편집기에 커서를 올리면 타입을 어떻게 추론하는 지 추측할 수 있다. XX.d.ts 파일을 통해 타입스크립트가 동작을 어떻게 모델링 하는 지 확인 할 수 있다. 더보기 제목 : 이펙티브 타입스크립트 : 동작 원리의 이해와 구체적인 조언 62가지 출판사 : 오랠리 지은이 : 댄 밴더캄 발행 : 2쇄 21년 11월 4일
Item 5. any 타입 지양하기
any 타입을 쓰면 타입스크립트를 쓰는 의미가 무색해진다. 왠만하면 쓰지 말자. 테스트할 때와 같이 너무 명백하게 타입을 알고 있을 경우를 제외하고. 더보기 제목 : 이펙티브 타입스크립트 : 동작 원리의 이해와 구체적인 조언 62가지 출판사 : 오랠리 지은이 : 댄 밴더캄 발행 : 2쇄 21년 11월 4일
Item 3. 코드 생성과 타입이 관계없음을 이해하기
타입스크립트 컴파일러는 두 가지의 역할을 수행한다. 구버전의 자바스크립트로 트랜스파일 타입 오류 체크 이 둘은 독립적으로 이루어지기 때문에 타입오류가 있는 코드도 컴파일이 가능하다. 만약 오류가 있을 경우 컴파일 하지 않으려면 noEmitOnError를 설정하거나 빌드 도구에 적용하면 된다. 런타임에는 타입체크가 불가능하다. 따라서 instanceof와 같이 런타임에 체크가 일어나는 경우 타입체크를 정상적으로 할 수 없다. 이러한 문제를 해결할 수 있는 방법은 1. 런타임에도 타입 정보를 체크할 수 있도록 코드 작성 function caculateArea(Shape){ if('height' in shape){ shape; //타입이 Rectangle return shape.width * shape.hei..