📘 타입스크립트 공변성 & 반공변성 완벽 이해 (tistory.com)
How I stumbled upon it
아마 정보처리 기사 공부 중에 객체지향의 SOLID 개념을 보던 중 이었을 것이다. 그 중 리스코프 치환 원칙(상위타입의 객체를 하위타입의 객체로 교체(치환)할 수 있어야 한다는 원칙)을 보고 있었는데 해당 개념에 대한 이해와 이를 실제 코딩을 할 때 적용하고 싶어서 여러가지 예시를 만들어보면서 놀고 있었다.
type SuperType = string
type SubType = "a string instance"
const subInstance:SubType = "a string instance"
const someFunc = (str : SuperType ) => { ... }
someFunc("random string") // work fine
someFunc(subInstance) // work fine
지금 생각하면 뭔가 정확히 부합하는 예시는 아닌것 같지만 그 당시에는 someFunc이라는 함수(프로그램)의 파라미터가 상위타입(string) 뿐만 아니라 이의 하위 타입("random string")을 전달받아도 이상 없이 동작을 한다는 점에서 적합한 예시라고 생각했다.
이런 예시들을 만들어보면서 놀다가 함수 타입을 생각하게 되었고 곧 이어 함수타입의 상위 타입은 뭐고 하위 타입은 뭐지? 가 궁금해졌다.
... ( 함수 타입의 상위 타입, 하위타입 관련 어떤 작업을 하다가 공변성이란 개념에까지 다다랐는지 서술)
'웹 개발 > TIL' 카테고리의 다른 글
WIP) 리스코프 치환 원칙 (0) | 2024.09.08 |
---|