Book/이펙티브 타입스크립트 (完)
5. 타입 추론(2/2) | 이펙티브 타입스크립트 3장
24. 일관성 있는 별칭 사용하기 별칭은 타입스크립트가 타입을 좁히는 것을 방해한다. 따라서 별칭은 일관되게 사용해야 한다. 별칭을 남발하면 제어 흐름을 분석하기 어렵다. interface Coordinate { x: number; y: number; } interface BoundingBox { x: [number, number]; y: [number, number]; } interface Polygon { exterior: Coordinate[]; holes: Coordinate[]; bbox?: BoundingBox; } function isPointInpolygon(polygon: Polygon) { const box = polygon.bbox; if (polygon.bbox) { polygon...
4. 타입 추론(1/2) | 이펙티브 타입스크립트 3장
타입스크립트는 타입 추론을 적극적으로 수행한다. 숙련된 타입스크립트 개발자는 비교적 적은 수의 구문을 사용한다. 19. 추론 가능한 타입을 사용해 장황한 코드 방지하기 타입스크립트가 타입을 추론할 수 있다면 타입 구문을 작성하지 않는 게 좋다. 오히려 방해가 될 뿐이다. // 비생산적이며 형편없는 스타일 let x: number = 12; let x = 12; // 로 충분하다. 타입스크립트는 예상보다 더 정확하게 추론하기도 한다. const axis1: string = 'x'; // 타입은 string const axis2 = 'y'; // 타입은 "y" 불필요한 명시적 타입 구문은 리팩터링을 더 번거롭게 한다. 비구조화 할당문은 모든 지역 변수의 타입이 추론되도록 하기 때문에 명시적 타입 구문을 넣는..
3. 타입스크립트의 타입시스템(2/2) | 이펙티브 타입스크립트 2장
12. 함수 표현식에 타입 적용하기 js/ts에서는 함수 선언식과 표현식을 다르게 인식한다. 타입스크립트에서는 함수 표현식을 사용하는 것이 좋다. 매개변수나 반환 값에 타입을 명시하기보다는 함수 표현식 전체에 타입 구문을 적용하는 것이 좋다. 더 간결하고 안전하다. 만약 같은 타입 시그니처를 반복적으로 작성한 코드가 있다면 함수 타입을 분리해 내자. type BinaryFn = (a: number, b: number) => number; const add: BinaryFn = (a, b) => a + b; const sub: BinaryFn = (a, b) => a - b; const mul: BinaryFn = (a, b) => a * b; const div: BinaryFn = (a, b) => a ..
2. 타입스크립트의 타입 시스템(1/2) | 이펙티브 타입스크립트 2장
6. 편집기를 사용하여 타입 시스템 탐색하기 타입스크립트를 설치하면 다음 두 가지를 실행할 수 있다. 타입스크립트 컴파일러(tsc) 단독으로 실행할 수 있는 타입스크립트 서버(tsserver) 타입스크립트 서버 또한 '언어' 서비스를 제공한다는 점에서 중요하다. 언어 서비스에는 코드 자동 완성, 명세 검사, 검색, 리팩터링이 포함된다. 편집기에서 타입스크립트 언어 서비스를 적극 활용해야 한다. 편집기를 사용하면 어떻게 타입 시스템이 동작하는지, 타입스크립트가 어떻게 타입을 추론하는지 개념을 잡을 수 있다. 타입스크립트가 동작을 어떻게 모델링하는지 알기 위해 타입 선언 파일을 찾아보는 방법을 터득해야 한다. 7. 타입이 값들의 집합이라고 생각하기 변수에는 다양한 종류의 값을 할당할 수 있고, 코드가 실행되..
1. 타입스크립트 알아보기 | 이펙티브 타입스크립트 1장
1. 타입스크립트와 자바스크립트의 관계 이해하기 타입스크립트는 자바스크립트의 상위집합이다. .js 파일에 있는 코드는 이미 타입스크립트라고 할 수 있다. .ts로 바꾼다고 해도 달라지는 것은 없다. 이는 기존의 자바스크립트 코드를 타입스크립트로 마이그레이션하는 데 엄청난 이점이 된다. 다시 말해, 모든 자바스크립트 프로그램은 이미 타입스크립트 프로그램이다. 반대로, 타입스크립트는 별도의 문법을 가지고 있기 때문에 일반적으로는 유효한 자바스크립트 프로그램이 아니다. 예를 들어, 다음 코드는 유효한 타입스크립트 프로그램이지만 단순 node로 실행할 경우 오류를 출력한다. function greet(who: string) {} // SyntaxError: Unexpected token : 타입스크립트 컴파일러..