Search

2주차

7장

& : 교집합

인터페이스의 속성이 아닌, 속성의 값이 교집합이라고 생각해야합니다.
type A = { a: string; b: 'A' | 'B'; }; type B = { b: 'B' | 'C'; c: string; }; type C = A & B; const c: C = { a: '1', b: 'B', c: '1', }; type D = A | B; const d: D = { a: '1', b: 'A', c: '2' } // 에러
JavaScript
복사

keyof (A | B)

keyof (A|B) = (keyof A) & (keyof B) = 'b'
keyof (A&B) = (keyof A) | (keyof B) = 'a' | 'b' | 'c'

8장 타입 공간과 값 공간의 심벌 구분하기

타입스크립트는 값과 타입을 구분해야합니다.
class, enum은 값과 타입 두가지 모두 사용할 수 있습니다.
class는 값으로 쓰일 땐 생성자, 타입으론 형태(속성, 메서드)가 됩니다.

9장 타입 단언보단 선언

단언보단 선언을 사용해야합니다.
화살표 함수의 명시방법을 익혀야합니다.
const people = ['a', 'b', 'c'].map((name):Person => ({name}));
JavaScript
복사
타입스크립트보다 타입을 더 잘아는경우(ex. dom)에선 사용해도됩니다.

10장 객체 래퍼 타입 피하기

String = string은 가능하지만 string = String은 불가합니다.
객체타입은 지양하고, 기본형 타입을 사용해야합니다.

11장 잉여 속성 체크의 한계 인지하기

객체 리터럴을 변수에 할당하거나, 매개변수로 사용시 잉여 속성 체크가 됩니다.
const a: { a: string } = { a: 'ㅁ' } // 에러 발생
JavaScript
복사
정해진 속성외에 다른 속성이 없는지 확인합니다.
단, 변수에 할당 후 다시 할당하는 방식은 체크하지 못합니다.
const a: { title: string } = document; // 정상
JavaScript
복사

12장 함수 표현식에 타입 적용하기

매개 변수나 반환값에 타입을 명시하기 보다 함수 표현식 전체에 타입 구문을 적용하는 것이 좋습니다.
const a: MouseEventHandler = (e) => {}
JavaScript
복사

13장 타입과 인터페이스의 차이점 알기

타입은 유니온( | ), 배열 등 복잡한 타입확장이 가능합니다.
인터페이스는 보강(augument) 기법이 가능합니다.
interface IState { name: string; capital: string; } interface IState { poluation: number; }
JavaScript
복사