스터디/이펙티브 타입스크립트 6

[이펙티브 타입스크립트] 8장 타입스크립트로 마이그레이션하기 아이템58-60

8장 타입스크립트로 마이그레이션하기대규모 프로젝트를 타입스크립트로 마이그레이션할 때는 점진적으로 전환해야 한다.또, 진행 상황을 모니터링하고 추적해서 중복된 작업을 방지할 수 있어야 한다. 아이템 58 모던 자바스크립트로 작성하기타입스크립트는 코드를 특정 버전의 자바스크립트로 컴파일할 수 있다.옛날 버전의 자바스크립트 코드를 최신 버전의 자바스크립트로 바꾸면 최신 버전의 자바스크립트 기능을 코드에 추가해도 문제가 없기 때문에, 타입스크립트로 전환하는 작업의 일부로 볼 수 있다. 타입스크립트를 도입할 때 가장 중요한 기능은 ECMAScript 모듈과 ES2015이다. ES5에 도입된 strict mode보다 타입스크립트가 더 엄격한 체크를 하기 때문에 'use strict'는 무의미하다.코드에 'use s..

[이펙티브 타입스크립트] 7장 코드를 작성하게 실행하기 아이템53~55

아이템 53 타입스크립트 기능보다는 ECMAScript 기능을 사용하기타입스크립트 개발 초기에는 자바스크립트에 클래스, 데코레이터, 모듈 시스템 같은 기능이 없어 독립적으로 이러한 기능들을 개발하였다.자바스크립트에서 이러한 기능들이 새로 추가되면서 타입스크립트의 초기 버전에서 독립적으로 개발했던 기능과 호환성 문제를 발생시켰다. 타입스크립트는 초기 버전과의 호환성을 포기하고 자바스크립트의 신규 기능을 그대로 채택하였다.자바스크립트는 런타임 기능을, 타입스크립트는 타입 기능만 발전시킨다는 명확한 원칙을 세웠다. 다음의 언급되는 기능들은 타입스크립트 초기에 개발된 기능들로 타입 공간과 값 공간의 경계를 혼란스럽게 만들기 때문에 가급적 사용하지 않는 것이 좋고, 불가피하게 사용한다면 유의해야 한다. 열거형(e..

[이펙티브 타입스크립트] 5장 any 다루기

아이템 42 모르는 타입의 값에는 any 대신 unknown을 사용하기// ❌ 반환 타입으로 any 사용function parseYAML(yaml: string): any {// ...}// ❌ 이 경우에는 제네릭을 사용하는 건 권장하지 않는다.function safeParseYAML(yaml: string): T { return parseYAML(yaml);}// 🟢 반환 타입으로 unknown 사용function safeParseYAML(yaml: string): unknown { return parseYAML(yaml); } 일반적으로 타입스크립트 타입시스템은 한 집합은 다른 모든 집합의 부분 집합이면서 동시에 상위집합이 될 수 없다.그러나 any는 어떠한 타입이든 any 타입에 할당 가능..

[이펙티브 타입스크립트] 4장 타입 설계 28~32

4장에서는 타입을 설계하는 것에 대해 다루고 있다. 이 내용은 타입스크립트 뿐만 아니라 다른 언어에도 적용할 수 있는 아이디어이다. 아이템 28. 유효한 상태만 표현하는 타입을 지향하기타입은 유효한 상태만 표현하도록 설계해야 한다.interface State { pageText: string isLoading: boolean error?: string} State 타입은 isLoading이 true이면서 동시에 error 값이 설정될 수 있는데 이러한 상태는 존재할 수 없다(무효한 상태를 허용한다). //isLoading이 true이고 error가 존재하면 로딩 중인지 오류가 발생한 것인지 알 수 없다.function renderPage(state: State) { if (state.error) ..

[이펙티브 타입스크립트] 3장 타입 추론 19~23

타입스크립트는 적극적으로 타입을 추론한다.타입 추론을 잘 활용하면 타입을 명시적으로 선언하는 일이 줄어들기 때문에, 전체적인 안정성이 향상된다.이번 장에서는 타입스크립트에서 타입 추론이 어떻게 이루어지는지, 주의해야하는 상황과 해결 방법에 대해 다룬다. 아이템 19. 추론 가능한 타입을 사용해 장황한 코드 방지하기✔️ 타입 추론이 가능하다면 명시적으로 타입을 선언할 필요가 없다.타입스크립트가 스스로 타입을 추론하지 못한다면 타입을 명시해야 한다.타입스크립트에서 타입은 일반적으로 변수가 처음 등장할 때 결정된다. 장점 1. 리펙토링에 용이하다.명시적으로 타입을 선언한 경우에는 타입이 변입이 변경되면 해당 변수를 사용하는 모든 곳에서 타입을 바꿔야 하지만, 타입 추론을 활용하면 변경할 필요가 없다.inter..

[이펙티브 타입스크립트] 1장 타입스크립트 알아보기

1장은 타입스크립트의 언어적 특징에 대해 설명하고 있다.특히 자바, C++과 같은 다른 언어와 어떤 차이가 있는지, 자바스크립트와는 어떤 관계가 있는지에 대한 내용이다. 아이템 1. 타입스크립트와 자바스크립트의 관계타입스크립트는 또 다른 고수준 언어인 자바스크립트로 컴파일되고 실행된다.그렇기 때문에 자바스크립트와의 관계를 이해하는 것이 매우 중요하다.## 타입스크립트는 자바스크립트의 상위집합이다. 자바스크립트에 타입스크립트를 일부만 적용할 수 있어, 점진적으로 마이그레이션이 가능하다.그렇지만 타입스크립트는 타입을 명시하는 추가적인 문법을 가지고 있기 때문에 모든 자바스크립트가 타입스크립트의 타입 체커를 통과하는 것은 아니다. ## 타입스크립트의 타입 시스템은 자바스크립트의 런타임 동작을 모델링한다.다른 ..