객체 리터럴 타입
local shape한 번 쓰는 값이나 가까운 범위의 변수에 직접 구조를 붙일 때 적합하다.
let user: {
name: string;
age?: number;
};
객체 리터럴 타입은 즉석 구조를 빠르게 고정하고, interface는 같은 구조를 이름 있는 협업 계약으로 재사용하게 한다.
한 번 쓰는 값이나 가까운 범위의 변수에 직접 구조를 붙일 때 적합하다.
let user: {
name: string;
age?: number;
};
여러 객체와 함수가 같은 모양을 공유하면 이름 있는 계약으로 분리한다.
interface User {
readonly id: string;
name: string;
}
누락 가능성을 타입에 드러내고, 사용할 때 undefined를 함께 고려한다.
식별자나 외부에서 바꾸면 안 되는 값을 생성 시점 이후 고정한다.
키 이름은 유동적이지만, 모든 값의 타입은 같은 규칙으로 제한한다.
공통 속성은 부모 인터페이스에 두고, 구체 타입은 필요한 속성만 덧붙여 계약을 작게 유지한다.
누락되면 안 되는 값은 ? 없이 둔다.
문자열, 숫자, 불리언이 예제와 맞는지 본다.
바뀌면 안 되는 값에는 readonly를 붙인다.
반복되는 구조는 interface 이름으로 합의한다.