readonly가 권장되는 이유

nearworld·2023년 4월 16일
0

typescript

목록 보기
23/28

Cage 인터페이스에 animal속성은 readonly가 아니므로 수정가능한 상태다.

interface Cage<T> {
    animal: T;
}

class Animal {
    legs: number = 4;
}
class Dog extends Animal {
    bark() {
        console.log('bark! bark!')
    }
}
class Cat extends Animal {
    meow() {
        console.log('meow! meow!')
    }
}

let dogCage: Cage<Dog> = {animal: new Dog()};
let cage: Cage<Animal> = dogCage; // Covariant한 상황
cage.animal = new Cat();
dogCage.animal.bark(); // 에러 발생
interface Cage<T> {
   readonly animal: T;
}
profile
깃허브: https://github.com/nearworld

0개의 댓글