강의

멘토링

커뮤니티

Cộng đồng Hỏi & Đáp của Inflearn

Hình ảnh hồ sơ của tkdals587995808
tkdals587995808

câu hỏi đã được viết

TypeScript vừa tầm một miếng ăn (TypeScript Bite-sized)

Tính tương thích của kiểu hàm

7:17초 업캐스팅 질문이있습니다!

Viết

·

65

·

Đã chỉnh sửa

0

안녕하세요 선생님!
다름이아니라 c = d; 부분에서 업캐스팅이라고 하셨는데 혹시 다운캐스팅이 아닌가 하는 생각이 들어서 질문을 남깁니다!


type C는 슈퍼타입(넘버타입)이고, type D는 서브타입(넘버 리터럴타입) 입니다.

c = d;
즉, c라는 변수에 d라는 값을 할당합니다.

슈퍼타입의 자리에 서브타입을 할당합니다.

결국 슈퍼타입이 서브타입이 되므로 다운캐스팅이라고 이해했습니다.

아래는 제가 생각한 코드의 흐름입니다.

 

 

image.png
  1. 21번째 줄) type C = (value: number) => void; >> "C"라는 타입을 타입별칭으로 설정

  2. 24번째 줄) let c: C = (value) => {}; >> "c"라는 화살표 함수를 정의. 여기서 매개변수로 타입"C"를 받음.

  3. 24번째 줄) let c: (value: number) => void = (value) => {};

    >> "C"라는 타입별칭을 사용하는 대신, 직접 타입 작성

 

>> c함수는 (number) => void를 기대함.

>> d함수는 (10) => void 만 처리할 수 있음.

>> c함수는 10 뿐만이 아닌, 다른 숫자가 와도 처리 가능 = d함수보다 넓은 범위를 처리할 수 있음.

= 함수타입에서는 슈퍼타입의 자리에 서브 타입을 넣는건 값이 제한적이어서 안전하지않음 - 에러발생

느슨한 조건(슈퍼타입)에서 -> 구체적인 조건(서브타입)으로 = 다운캐스팅

 

혹시 제가 어디서 잘못된걸까요..??

typescript

Câu trả lời 1

0

winterlood님의 프로필 이미지
winterlood
Người chia sẻ kiến thức

안녕하세요 이상민님 이정환입니다.

c = d에서 말씀드린 업캐스팅은, 함수 타입 전체가 아닌 매개변수의 타입 관계를 기준으로 설명 드린 것입니다. 함수 타입간의 업, 다운 캐스팅 관계를 말씀 드린것은 아니었습니다

Hình ảnh hồ sơ của tkdals587995808
tkdals587995808

câu hỏi đã được viết

Đặt câu hỏi