Effective-TypeScript를 읽고 정리하는 공간입니다.
5주 안에 Effective-TypeScript를 전부 다 읽고 이해하기
- 예상 완독 기간 : 5주 (8/29 ~ 9/30)
- 1주 당 소화해야 하는 분량 : 62 / 5 = 12.4개
- 하루 당 공부해야 하는 분량 : 12.4 / 5 = 약 2개 ~ 3개
- 1개 당 소요되는 예상 시간 : 30분 ~ 1시간
- 매일 투자해야 하는 예상 시간 : 1시간 ~ 3시간 => 최대 2시간으로 맞춰놓기(12시 ~ 2시)
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 1 | Understand the Relationship Between TypeScript and JavaScript | 자바스크립트에 비해 타입스크립트가 제공해주는 차별화 기능에 대한 개괄적인 내용 | 8/29 | 45분 |
Item 2 | Know Which TypeScript Options You're Using | noImplicitAny 와 strictNullChecks 설정이 타입스크립트에 끼치는 영향 | 8/29 | 30분 |
Item 3 | Understand That Code Generation Is Independent of Types | 타입스크립트의 타입 시스템은 런타임 성능에 영향을 주지 않으며 이는 자바스크립트 코드로 생성하는 과정과 독립적이라는 것을 의미함 | 8/29, 8/30 | 45분 |
Item 4 | Get Comfortable with Structural Typing | Structural Typing 은 duck type 을 모델링 하여 타입스크립트에서 만들어진 것으로 구조적 유사성을 활용하여 좀 더 원활한 코드를 작성할 수 있게 함 | 8/30 | 30분 |
Item 5 | Limit Use of the any Type | 타입스크립트의 any 유형을 쓰지 말아야 하는 이유 | 8/30 | 20분 |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 6 | Use Your Editor to Interrogate and Explore the Type System | 타입스크립트를 사용할 때 에디터가 어떻게 타입 추론의 이점을 주고 기능을 제공하는지 정리한 것 | 8/31 | 15분 |
Item 7 | Think of Types as Sets of Values | 타입스크립트의 타입 시스템이 집합으로서 여겨지고 작동하는 것을 설명하는 내용 | 8/31 | 35분 |
Item 8 | Know How to Tell Whether a Symbol Is in the Type Space or Value Space | type space와 value space 이 2가지 중 값들이 어디에 속하는지에 대한 설명을 해놓은 것 | 8/31, 9/1 | 25분 |
Item 9 | Prefer Type Declarations to Type Assertions | Type Declaration(타입 선업)과 Type Assertion(타입 주입)의 차이점 | 9/1 | 20분 |
Item 10 | Avoid Object Wrapper Types (String, number, Boolean, Symbol, BigInt) | Object Wrapper Type 사용을 피해야하는 이유 | 9/2 | 20분 |
Item 11 | Recognize the Limits of Excess Property Checking | Excess Property Checking 이 기존 타입스크립트의 Type Checker 와 어떻게 다른지 인지하고 사용하기 | 9/2 | 20분 |
Item 12 | Apply Types to Entire Function Expressions When Possible | 반복되는 함수식에 대하여 하나의 타입으로 변환하여 적용해보기 | 9/3 | 15분 |
Item 13 | Know the Differences Between type and interface | 타입과 인터페이스의 유사점과 차이점 | 9/3 | 20분 |
Item 14 | Use Type Operations and Generics to Avoid Repeating Yourself | 타입스크립트 상에서 코드를 줄이는 효과적인 방법 | 9/4 | 30분 |
Item 15 | Use Index Signatures for Dynamic Data | 동적 타입에도 적용가능한 인덱스를 활용한 Generic Type 사용법 | 9/4 | 20분 |
Item 16 | Prefer Arrays, Tuples, and ArrayLike to number Index Signatures | 숫자 인덱스 접근을 위해서 배열, 튜플과 같은 요소를 사용해야 하는 이유 | 9/6 | 30분 |
Item 17 | Use readonly to Avoid Errors Associated with Mutations | 함수가 받는 매개변수에 대하여 사이드 이펙트를 막는데 효과적으로 사용되는 방식인 readonly 에 대하여 이해하기 | 9/6 | 30분 |
Item 18 | Use Mapped Types to Keep Values in Sync | 값을 동기화 시키기 위하여 Mapped Type을 사용해야 하는 이유 | 9/7 | 20분 |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 19 | Avoid Cluttering Your Code with Inferable Types | 지나친 타입 작성을 피하며 잘 사용하기 | 9/9 | 10분(미완) |
Item 20 | Use Different Variables for Different Types | 같은 변수명을 사용하지 말고 다른 변수명과 다른 타입을 사용해야 하는 이유 | 9/7 | 20분 |
Item 21 | Understand Type widening | 타입 확장을 적용하는 여러 방법들 | 9/9 | 20분 |
Item 22 | Understand Type Narrowing | 타입의 범위를 좁히는 여러 가지 방법 | 9/10 | 20분 |
Item 23 | Create Objects All at Once | 객체를 한번에 생성해야 하는 이유 | 9/10 | 15분 |
Item 24 | Be Consistent in Your use of Aliases | 별칭을 일관성 있게 사용해야 하는 이유 | 9/12 | 15분 |
Item 25 | Use async Functions Instead of Callbacks for Asynchronous Code | 타입스크립트 상에서 콜백보다 비동기 방식을 사용하는 것이 좋은 이유 | 9/12 | 15분 |
Item 26 | Understand How Context Is Used in Type Inference | Reference Form 에서 타입스크립트가 문맥으로 타입을 추론함 | 9/12 | 15분 |
Item 27 | Use Functional Constructs and Libraries to Help Types Flow | 함수형 프로그래밍 함수와 라이브러리들을 통한 타입 흐름 이어가기 | 9/12 | 10분 |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 28 | Prefer Types That Always Represent Valid States | 유효한 상태만 나타내는 타입들을 선호해야 하는 이유 | 9/14 | 20분 |
Item 29 | Be Liberal in What You Accept and Strict in What You Produce | 입력에는 열려있고 출력에는 구체적이어야 한다. | 9/14 | 15분 |
Item 30 | Don't Repeat Type Information in Documentation | 주석에 타입 정보가 중복되지 않도록 하기 | 9/15 | 10분 |
Item 31 | Push Null Values to the Perimeter of Your Types | 변수 객체에 null 값들을 섞어 타입 혼란을 겪는 것을 피하자 | 9/15 | 15분 |
Item 32 | Prefer Unions of Interfaces to Interfaces of Unions | |||
Item 33 | Prefer More Precise Alternatives to String Types | |||
Item 34 | Prefer Incomplete Types to Inaccurate Types | |||
Item 35 | Generate Types from APIs and Specs, Not Data | |||
Item 36 | Name Types Using the Language of Your Problem Domain | |||
Item 37 | Consider "Brands" for Nominal Typing |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 38 | Use the narrowest Possible Scope for any Types | |||
Item 39 | Prefer More Precise Variants of any to Plain any | |||
Item 40 | Hide Unsafe Type Assertions in Well-Typed Functions | |||
Item 41 | Understand Evolving any | |||
Item 42 | Use unknown Instead of any for Values with and Unknown Type | |||
Item 43 | Prefer Type-Safe Approaches to Monkey Patching | |||
Item 44 | Track Your Type Coverage to Prevent Regressions in Type Safety |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 45 | Put TypeScript and @types in devDependencies | |||
Item 46 | Understand the Three Version Involved in Type Declarations | |||
Item 47 | Export All Types that Appear in Public APIs | |||
Item 48 | Use TSDoc for API Comments | |||
Item 49 | Provide a Type for this in Callbacks | |||
Item 50 | Prefer Conditional Types to Overloaded Declarations | |||
Item 51 | Mirror Types to Server Dependencies | |||
Item 52 | Be Aware of the Pitfalls of Testing Types |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 53 | Prefer ECMAScript Features to TypeScript Features | |||
Item 54 | Know How to Iterate Over Objects | |||
Item 55 | Understand the DOM hierarchy | |||
Item 56 | Don't Rely on Private to Hide Information | |||
Item 57 | Use Source Maps to Debug TypeScript |
제목 | 내용 | 설명 | 공부 날짜 | 학습 시간 |
---|---|---|---|---|
Item 58 | Write Modern JavaScript | |||
Item 59 | Use @ts-check and JSDoc to Experiment with TypeScript | |||
Item 60 | Use allowJs to Mix TypeScript and JavaScript | |||
Item 61 | Convert Module by Module Up Your Dependency Graph | |||
Item 62 | Don't Consider Migration Complete Until You Enable noImplicitAny |