좁은 타입과 넓은 타입
type A = string | number;
type B = string;
type C = string & number;
- A는 넓은 범위 이고 B는 좁은 법위이다. B가 A로 대입 가능하지만 A는 B로 대입이 불가능 하다.
- C는 B와 비교하면 C가 B보다 더 좁은 타입이다. C는 string과 number 둘다 만족해야 하기 때문에 교집합이라고 생각하면 더 좁은 범위이다.
type A = { name: string };
type B = { age: number };
type AB = A | B;
type C = { name: string, age: number };
type C = A & B;
const ab: AB = { name: 'zerocho'};
const c: C = { name: 'zerocho' };
- 위의 객체 A,B와 C중에 누가 더 좁은 타입 일까? 답은 C가 더좁은 타입이다.
- 객체는 상세 할수록(구체적으로) 범위가 더 좁다.
- AB는 또는 이기 때문에 A,B보다 더 넓은 타입이다.