참고
상속
- 자바스크립트의 클래스는 이중 상속을 받을 수 없다. 단일 상속만 가능
믹스인
- 클래스 A가 클래스 B를 확장해서 기능을 상속받는 것이 아니라,
함수 B가 클래스 A를 전달받고 생성자를 확장하여 기능이 추가된 새 클래스 A’ 를 반환한다.
⇒ 이 때, 함수 B가
믹스인
간단 예제
User
클래스에 timestamp
, PrintTimestamp()
멤버를 추가한다.
type Constructor<T = {}> = new (...args: any[]) => T;
function Timestamped<TBase extends Constructor>(Base: TBase) {
return class extends Base {
timestamp = Date.now();
PrintTimestamp = () => {
console.log(`Timestamp : ${new Date(this.timestamp).toISOString()}`);
}
};
}
class User {
public name = '';
}
const TimestampedUser = Timestamped(User);
const instance = new TimestampedUser();
console.log(instance.timestamp);
instance.PrintTimestamp();