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
복사