상호 작용
물체의 모양을 알고 싶을 때 사용합니다.
인터페이스는 객체 지향 프로그래밍의 개념을 구현하는 반면 유형은 더 유연합니다.
유형~에서 정의할 때
type Player = {
nickname:string,
healthBar:number
}
상호 작용~처럼 정의하다 그때에
interface Player {
nickname:string,
healthBar:number
}
Function makeUser(user: Player) : Player{
return {
nickname : ’subin’,
healthBar : 10
}
}
interface Hello = string; // interface는 오직 object의 모양만 설정할 수 있기때문에 에러가 난다.
유형이 더 유연하기 때문에 다양한 목적으로 사용할 수 있습니다.
인터페이스와 마찬가지로 개체의 모양을 정의하고 별칭을 만들 수 있습니다.
하지만 상호 작용~이다 오직 물체오직 허용.
*추상 클래스 인계하다 그때에
abstract class User {
constructor(
protected firstName:string,
protected lastName:string,
){}
abstract sayHi(name:stirng):string
abstract fullName():string
}
class Player extends User{
fullName(){
return `${this.firstName} ${lastName}`
}
sayHi(name:string){
return `Hello ${name}. My name is ${fullName}`
}
}
*추상 클래스 대신에 상호 작용붓다 인계하다 그때에
interface User {
firstName : string,
lastName : string,
sayHi(name:stirng) : string
fullName() : string
}
interface Human {
health : number
}
// 하나 이상의 interpace를 동시에 상속받을 수 있다.
class Player implements User, Human{ // abstract class를 상속받을때 쓰는 extends 대신 inplements라는 js가 사용하지 않는 단어를 쓴다.
constructor(
public firstName : string, // Interface를 상속할때는 property를 private로는 만들지 못한다.
public lastName : string,
public health : number,
){}
fullName(){
return `${this.firstName} ${lastName}`
}
sayHi(name:string){
return `Hello ${name}. My name is ${fullName}`
}
}
추상 클래스는 표준화된 속성 및 메서드를 가질 수 있는 청사진을 만드는 데 사용됩니다.
추상 클래스를 사용하지만 js에서는 일반 클래스로 변경합니다.
인터페이스가 컴파일되면 js로 바뀌지 않고 사라집니다.
그래서 이때 인터페이스붓다 사용.
* 인터페이스 상속 시 주의사항
1. 개인 또는 재산을 사용할 수 없습니다.
2. 추상 클래스에는 생성자가 있었는데 인터페이스를 사용할 때 생성자 부분이
상속 클래스에서 개별적으로 설정해야 합니다.