Interface
// 😀 Person이라는 객체 타입을 interface로 만들었다.
interface Person {
name: string;
age: number;
}
// 😀 person이라는 객체는 Person이라는 interface를 따른다
const person: Person = {
name: "한대희",
age : 31
};
// 😀 name은 읽기 전용, age는 선택적 프로퍼티로 적용
interface Person {
readonly name: string;
age?: number;
}
// 😀 age는 선택적 프로퍼티 이기 때문에 입력하지 않아도 된다.
const person: Person = {
name: "한대희",
};
// 😀 name은 읽기 전용이기 때문에 점 표기법으로 접근할 수 없다.
person.name // 🔥 에러 발생
interface Person {
readonly name: string;
age?: number;
func: () => void;;
}
Interface 확장
// 😀 아래의 interface를 살펴 보면 모든 interface가 name과 age 프로퍼티를 가지고 있다.
interface People {
name: string;
age: number;
}
interface Person1 {
name: string;
age: number;
height : number;
}
interface Person2 {
name: string;
age: number;
weight: number;
}
interface Person3 {
name: string;
age: number;
gender: string;
}
// 😀 확장 기능을 사용하면 공통된 프로퍼티를 상속 받을 수 있다.
interface People {
name: string;
age: number;
}
interface Person1 extends People {
height : number;
}
interface Person2 extends People {
weight: number;
}
interface Person3 extends People {
gender: string;
}
// 😀 여러개의 interface를 상속 받을 수도 있다.
interface Person4 extends Person1, Person2 {
name: string;
age: number;
height : number;
weight: number;
}