inflearn logo
강의

Course

Instructor

[Code Factory] [Beginner] Complete Typescript Course from Code Factory in Just 8 Hours

Override

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

391

Intuitioner

5 asked

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 파라미터는 추가적으로 존재해도 됨

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

 

감사합니다.

typescript

Answer 3

0

egpark

안녕하세요, 코드팩토리님!
이 부분은 어떻게 정리가 됐나요?

Intuitioner님의 의견으로 강의 내용이 수정되어야 하는게 맞나요?

컨펌(?)을 분명히 어딘가에 주셨을 것 같은데 제가 찾지 못하고 있는 것 같아서 여기에 문의드립니다!

0

codefactory

안녕하세요!

Intuitioner님과 basestar011님의 말씀이 맞는걸로 확인됩니다!

혼선을드려 죄송합니다!

0

basestar011

오버라이드 할 때 부모 메서드의 옵셔널 파라미터를 부모 메서드와 다른 타입으로 지정해보았더니 에러메시지에 undefined와 유니언 되어있는 걸로 나오네요.

아마 부모 메서드의 옵셔널 파라미터가 자식에서 필수 파라미터로 되는 이유가 아마 undefined와의 유니언 타입에서 내로잉 된 타입이기에 가능한 것이 아닐까 해요.

저도 이부분 강의 듣고 정리하면서 정말 안되나 테스트해봤더니 되가지고 의문이 들어 확인해봤네요..

강의 영상에 수정이 필요할 듯 합니다 😅

0

codefactory

안녕하세요!

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

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

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

감사합니다!

ts강의 42. override 마지막즘 질문

0

42

1

25. js array의 문제점 4:55쯤 질문입니다

0

31

1

union 기본기 7분 53초 질문 드립니다.

0

117

2

Equality Narrowing 관련 질문

0

117

2

tsconfig.json 설명

0

124

2

환불 관련 질문 드립니다.

0

179

1

재너릭이랑 any 차이가 뭔가요?

0

221

2

리플렉션과 데코레이터 사용시 의문점

0

135

2

변수의 선언이 중복되었다고 할 때

0

162

2

type 으로 함수의 형식을 정의하고 함수를 정의할 때

0

144

1

declare 키워드가 가끔 나오던데 이건 뭔가요?

0

150

2

class가 값이 될 수 있다는 말을 이해하기 어렵습니다.

0

127

1

null값의 타입은 object 아닌가요?

0

188

1

타입? 인터페이스? 질문있습니다

0

147

1

type functionOnly = Extract<string| (()=> void), Function> 의 의미

0

171

2

npm install cache error

0

205

1

12_experimental_decorator, class decorator

0

131

1

9_class/7_override.ts, super 키워드 질문

0

211

2

강의 계획이 궁금합니다!

0

289

1

instantiator 질문

0

151

1

따라하는데 에러 생기네요

1

390

2

webstorm에서 ts-node 설치해도 문제가 발생하고 있습니다.

0

485

3

infer를 사용한 type의 쓰임새

0

131

1

혹시 수업하면서 작성된 코드는 따로 받아 볼 수 없나요?

0

203

1