Typescript9 [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 32 ~ 42 이펙티브 타입스크립트 읽고 정리아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기아이템 9 ~ 13 보러가기아이템 14 ~ 16 보러가기아이템 17 ~ 19 보러가기아이템 20 ~ 25 보러가기아이템 26 ~ 31 보러가기 3️⃣2️⃣ 유니온의 인터페이스보다는 인터페이스의 유니온을 사용하기하나의 인터페이스의 속성에 유니온들의 조합을 사용하는 것 보다는 인터페이스는 하나의 역할만 가지고 인터페이스들의 유니온을 사용하는 것이 의미가 명확해진다. 아래는 3가지 타입의 레이아웃과 페인트를 하나의 Layer 인터페이스에서 유니온으로 구성하고 있다. 아래에서 각 타입별로 맞는 layout과 paint가 존재하고 서로 조합해서 사용되는 경우는 존재하지 않는다고 가정하자. 아래의 코드처럼 속성을 유니온으로 구성하는 .. 2025. 7. 6. [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 26 ~ 31 이펙티브 타입스크립트 읽고 정리아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기아이템 9 ~ 13 보러가기아이템 14 ~ 16 보러가기아이템 17 ~ 19 보러가기아이템 20 ~ 25 보러가기 2️⃣6️⃣ 아이템 26. 타입 추론에 문맥이 어떻게 사용되는지 이해하기함수에 값을 전달할 때 리터럴과, 변수에 값을 담아서 사용하는 경우 차이가 발생할 수 있다.type AB = 'A' | 'B'function fn(ab: AB) {}fn('A');let a = 'A';fn(a); // 타입 에러 발생 위의 코드를 보면 동일한 A를 전달하고 있지만 변수 a값을 전달하는 경우 타입에러가 발생한다. 그 이유는 타입이 추론되는 시점이 다르기 때문이다. 리터럴 A는 함수를 호출할 때 전달되며 이 시점에서는 변수 타입.. 2025. 6. 28. [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 20 ~ 25 이펙티브 타입스크립트 읽고 정리아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기아이템 9 ~ 13 보러가기아이템 14 ~ 16 보러가기아이템 17 ~ 19 보러가기 2️⃣0️⃣ 아이템 20. 다른 타입에는 다른 변수 사용하기 자바스크립트에서는 변수에 타입이 존재하지 않기 때문에 어떠한 타입의 값도 저장할 수 있다. 하지만 타입스크립트에서는 변수에 타입을 지정하고 해당 타입의 값만 사용하는 것이 좋다.let value1 = "10";value1 = 10;let value2: string = "10";value2 = 10; // 타입 에러 발생 이를 통해 얻을 수 있는 장점은 변수의 값을 어느 정도 예측가능하기 때문에 이를 통해서 변수를 사용했을 때 발생할 수 있는 문제를 미연에 방지할 수 있다. 그리고 .. 2025. 6. 22. [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 17 ~ 19 이펙티브 타입스크립트 읽고 정리 아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기아이템 9 ~ 13 보러가기아이템 14 ~ 16 보러가기 1️⃣7️⃣ 아이템 17. 변경 관련된 오류 방지를 위해 readonly 사용하기함수의 매개변수를 수정하지 않는다면 readonly로 선언하는 것이 좋다. 함수 내부에서 매개변수를 수정하는 코드를 추가하면 타입에러를 발생시켜 준다. 아래 코드와 같이 Readonly를 사용하더라도 중첩된 객체까지 readonly가 적용되지 않는다. 얕게만 적용된다.interface A { a: { b: number; }}const obj: Readonly = { a: { b: 1 }};obj.a.b = 2; 1️⃣8️⃣ 아이템 18. 매핑된 타입을 사용하여 값을 동.. 2025. 6. 15. [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 14 ~ 16 이펙티브 타입스크립트 읽고 정리 아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기아이템 9 ~ 13 보러가기1️⃣4️⃣ 타입 연산과 제너릭 사용으로 반복 줄이기타입을 작성할 때도 코드 작성때와 마찬가지로 중복을 줄이는 것이 좋다. 인터페이스에서는 extends, 타입에서는 & 연산자를 통해 공통 속성에서의 확장을 통해 중복을 줄 일 수 있다.interface Person { name: string;}interface Student extends Person { school: string;} 타입은 자바와 달리 타입이 닫혀있지 않기 때문에 좀 더 유연하게 확장할 수 있다. 공통 속성을 잘 정의 해 놓으면 이후 타입 확장을 통해 중복 코드를 줄이기 쉽다. 확장하려는 타입이 항상 부모 타입의 속성을 가지는 .. 2025. 6. 14. [TypeScript] 이펙티브 타입스크립트 정리 - 아이템 9 ~ 13 이펙티브 타입스크립트 읽고 정리 아이템 1 ~ 5 보러가기아이템 6 ~ 8 보러가기 9️⃣ 아이템 9. 타입 단언보다는 타입 선언을 사용하기값에 타입을 부여하는 방법은 두가지가 존재한다.타입 단언 : 변수 선언 시 타입을 지정하는 방법타입 선언 : 값에 타입을 지정하는 방법타입 선언을 사용하는 경우 변수에 값 할당 시 해당 값이 지정된 타입을 만족하는지를 체크한다.타입 단언은 타입스크립트가 추론한 타입을 무시하고 지정한 타입으로 강제로 지정하는 것이다. 아래에서 보듯이 동일한 {} 값을 변수에 할당할 때 person1에는 타입에러가 발생하고 person2는 타입에러가 발생하지 않는다. {} 는 Person이 아니기 때문에 타입 에러가 발생해야한다. 하지만 단언에서는 발생하지 않기 때문에 추후 문제가 발생.. 2025. 6. 8. 이전 1 2 다음