interface Student {
id: number;
name: string;
age?: number;
gender: string;
}
// 매개변수(id)는 숫자 타입
// setStudent함수의 반환 타입은 Student타입
function setStudent(id: number): Student {
const student: Student = {
id: id,
name: 'kim',
gender: 'male',
};
return student;
}
const me = setStudent(1);
console.log(me); // { id: 1, name: 'kim', gender: 'male' }
interface Student{} 의 age 뒤에 ? 를 추가하여
값이 있을 수 도 없을 수 도 있다는 로직 (선택적 속성) 으로 바꿀 수 있다.
class playWorkout implements WorkOut {
id: number;
name: string;
region: string;
requipment?: string;
// 생성자를 추가하여 필수 속성 초기화
constructor(id: number, name: string, region: string, requipment?: string) {
this.id = id;
this.name = name;
this.region = region;
this.requipment = requipment;
}
// setPlay 메서드 정의
setPlay(name: string): void {
this.name = name;
console.log(`Workout: ${this.name}`);
}
// getPlay 메서드 정의 (선택적 메서드)
getPlay?(): void {
console.log(`Current Workout: ${this.name}`);
}
}
// 객체 생성 시 필수 값 제공
const squatWorkout = new playWorkout(1, 'Squat', 'Legs', 'Barbell');
squatWorkout.setPlay('Deadlift');
squatWorkout.getPlay?.();
string이나 number 타입처럼 데이터 타입으로 사용 가능?를 붙여준다.implements는 클래스가 특정 인터페이스를 구현(implements)하도록 강제하는 키워드이다.속성과 메서드를 반드시 구현해야한다.