inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

TS/JS 디자인 패턴 with Canvas: 제로초에게 제대로 배우기

보너스: SOLID 원칙

리스코프 치환원칙은 반,공변성과 같은 원리인가요?

234

squirrel PARK

작성한 질문수 14

0

class Parents {
  // 좁은 파라미터
  method(name: string, test: string) {
    // 넓은 반환 타입
    return { key: "" };
  }
}

class Child extends Parents {
  // 넓은 파라미터
  override method(name: string) {
    // 좁은 반환 타입
    return { key: "", name: "" };
  }
}

 

안녕하세요,

리스코프 치환원칙을 보니 반,공변성의 원칙과 같이

매개변수는 반공변성을 리턴은 공변성을 가지는 것 같은데, T<child> -> T<parents> 개념이 되는 타입의 정의 원칙을 리스코프 치환 원칙이라 하는 것일까요?

 

javascript typescript 객체지향 디자인-패턴 canvas

답변 1

1

제로초(조현영)

네 그렇게 이해해도 될 것 같습니다. 클래스 메서드에 한해서는요. LSP에는 메서드가 아닌 속성들 같은 것들도 관여합니다.

부모 자리에 자식 인스턴스를 넣어도 문제 없어야 하는데

const value = parent.method('name', 'test')
value.key;

이런 코드에 parent를 child로 바꿔도 문제가 없으려면 매개변수 반공변성, 리턴 공변성을 유지해야 합니다.

const value child.method('name', 'test')
value.key // 문제없음

0

squirrel PARK

감사합니다 이해가 되었어요!

강의 소스 코드는 어디서 볼수 있나여?

0

2

0

예외처리 3강 문의

0

5

0

자료집 관련

0

7

1

13. (App 2) 기본기 훈련 에서

0

14

1

챌린지 시작일 문의

0

16

0

17강 강의에 목데이터 첨부파일이 없습니다.

2

18

2

2. 어떤 도구를 사용하는 것이 가장 유리할까? 강의 중

0

16

1

11차시 Antigravity IDE 설치 후

0

19

1

처음 에이전트 설정을 잘못 했을 경우 수정 하는 방법

0

16

1

5,6,7,8 내용이 없어요

0

16

1

undo 구현

0

89

1

[프론트엔드 문서화 관련 질문]

0

101

1

커맨드 패턴 적용

0

134

1

type/interface 정의 파일분리

0

112

2

팩토리 패턴

0

150

2

강결합

1

167

2

React 환경에서 클래스형 디자인 패턴 활용에 관한 질문

0

217

2

질문 있습니다.

0

161

2

[공유] State 패턴 강의 최종본 커밋에서 누락된 부분이 존재

1

137

2

팩토리 메서드에 대해서 궁금증이 생겨서 질문드려봅니다!

0

236

2

.

0

126

1

[섹션1/사전에 알아두면 좋은 TS/JS 지식]영상 재생 관련 질문 드립니다.

0

207

2

[12강] 선언식 + bind vs arrow function 어떤거 선호하시나요?

0

220

2

싱글톤 강의

1

331

2