타입 스크립트의 타입 시스템은 구조적으로 타입화되어 있음.
매개변수는 변수가 특정 객체 타입으로 선언
-> 타입스크립트에 어떤 객체를 사용하든 해당 속성이 있어야 함.
//// 구조적 타이핑
type WithFirstName = {
firstName: string;
}
type WithLastName = {
lastName: string;
}
const hasBoth = {
firstName: 1234,
lastName: "Jasper"
}
let withFirstName: WithFirstName = hasBoth; // ERROR!
let withLastName: WithLastName = hasBoth; // OK
Duck typed
- 오리가 있음
- 오리처럼 주둥이가 넙죽함 + 오리처럼 꽥꽥거림 => 오리다! == 덕 타입
- 오리처럼 주둥이가 넙죽함 + 꽥꽥거리는 것 못 들어봄 => 뭔지 모르겠는디?