객체의 구조를 정의하기 위해 사용
interface User {
name: string;
age: number;
sayHello(): void;
}
// 인터페이스 구현
class Customer implements User {
constructor(public name: string, public age: number) {}
sayHello() {
console.log(`Hello, I'm ${this.name}`);
}
}
필수 속성 외 제공되지 않아도 사용이 가능한 선택적 속성이 있는데, 선택적 속성은 ? 을 통하여 정의할 수 있다.
interface user {
id:number;
name:string;
info?:string // 선택적 속성
}
//type Character = {
// nickName:string;
//}
//type BirdCharacter = { fly:number } & Character
interface Character {
nickName:string;
}
interface BirdCharacter extends Character {
fly:number;
}
데이터의 타입을 정의하기 위해 사용
type StringOrNumber = string | number;
type Point = {
x: number;
y: number;
};
// Union 타입
type Status = "pending" | "completed" | "failed";
// 튜플 타입
type Coordinates = [number, number];
// Interface - extends 사용
interface Animal {
name: string;
}
interface Dog extends Animal {
bark(): void;
}
// Type - & 사용
type Animal = {
name: string;
}
type Dog = Animal & {
bark(): void;
}
// Interface - 가능
interface User {
name: string;
}
interface User {
age: number;
} // name, age 모두 포함
// Type - 불가능
type User = {
name: string;
}
type User = { // Error
age: number;
}