• 카테고리

    질문 & 답변
  • 세부 분야

    프로그래밍 언어

  • 해결 여부

    미해결

타입스크립트 Class Override 관련 질문

23.07.30 18:17 작성 23.07.30 18:50 수정 조회수 149

0

상속받은 Class에서 부모 메소드 Override 조건이

// 1) 부모 메서드와 반환 타입이 일치해야한다.

// 2) 부모 메서드에 필수인 파라미터들이 존재해야한다.

// 3) 부모 메서드에서 optional인 파라미터들이 자식에서

// 필수로 지정되면 안된다.

라고 강의에서 이야기 하셨는데,

3)의 경우 잘못된게 아닌가 싶어서 문의드립니다.

https://www.typescriptlang.org/play?#code/MYGwhgzhAEAKYCcCmA7ALtA3gKGn6EAFgPYCuaAFCmALZIBcBaCAligOYA00Y7SA-IxSkaAIyQIAlFlz45yNKQQpoAAwAkmanQC+gH1HogCVHAqo0BCVQG5ZeHdlvZsoSDADChFiAAm0JAA80qJ4w8MjoOHJEZJTaDEysHNy8scJiEpKMEMxs7DJyefgKSioQpAAOEgB0keRUtEiSVnK2OkA

class Parent {
    shout(name: string, age?: number) {
        return `${name}야 안녕!`;
    }
}


class Child extends Parent {
    shout(name: string, age: number): string {
            return super.shout(name);
    }
}

위 링크와 같이 부모 클래스에 존재하는 optional 파라미터가 자식 클래스에서 필수로 지정되어도 오류가 발생하지 않는 것 같습니다.

제가 확인하고 정리한 요건은 다음과 같습니다.

  1. 부모 메소드와 자식 메소드의 반환 타입이 일치해야 함

  2. 부모 메소드에서 필수인 파라미터들은 자식 메소드에도 동일한 타입으로 필수 파라미터로 존재해야 함

  3. 부모 메소드에 존재하지 않는 필수인 파라미터가 자식 메소드에 존재하지 않아야 함

  4. 부모 메소드에 존재하는 optional 파라미터는 자식 메소드에 존재하지 않아도 됨(단, 존재할 경우 타입은 일치해야함)

  5. 자식 메소드에 optional 파라미터는 추가적으로 존재해도 됨

혹시 제가 잘못 생각한 부분인지 확인 부탁드립니다.

 

감사합니다.

답변 1

답변을 작성해보세요.

0

안녕하세요!

제가 테스트 해봤는데 현재 말씀하신 부분이 맞는걸로 확인됩니다.

다만 제가 분명 공식 다큐멘테이션에서 확인하고 테스트 한 후에 작성했던 커리큘럼이라 조금 이상하네요.

현재 레퍼런스를 못찾고 있는데 확인 후 다시한번 컨펌 드리도록 하겠습니다.

감사합니다!