inflearn logo
강의

강의

N
챌린지

챌린지

멘토링

멘토링

N
클립

클립

로드맵

로드맵

지식공유

타입스크립트 시작하기

타입 호환성

Person과 Product의 관계

196

Prov

작성한 질문수 18

0

안녕하세요

혹시 Person과 Product의 관계를 제가 이렇게 이해했는데

맞을까요 ?

interface 선언된 Person에 속성값이 많으면 많을 수록

1.구체적(?)으로 변하기 때문에 속성값이 없는 쪽이 더 많은 값을 할당 받을 수 있다고 생각해도 될까요 ?

2.다른 생각으로는 const test1 : Test={}이렇게 생긴 녀석은

모든걸 포괄할 수 있는 최상위 녀석이라고 생각해도 되는걸가요?

3.f1 = f2 와 f2= f1 의 관계에서  f2는 b: string | ( OR연산 ) number  와 같다고 생각하면 되는건가요 ?

4. f2 = f1의 관계도 이해가 조금 안 됩니다 ㅠㅠ

제가 생각하기론 f1은 b타입이 string인데 f2역시 b타입을 string으로 취할 수 있어 가능하다고 생각하는데 혹시 어느 부분에서 안되는건가요 ? number때문인가요 ?

5.f1=f2역시 f2의 b는 string | number 인데 

f1(1,1);이 오류가 나는 이유를 모르겠습니다.

f1(1,1);이 실행되면 f2가 가 호출되어

b의 type이 string | number이기 때문에 1이 number로 인식 되어 정상적으로 결과를 출력해야 맞는것이 아닌가요 ?!

typescript

답변 1

1

이재승

안녕하세요

1. 맞습니다

2. 맞습니다. 다만 작성하신건 타입이라기 보다는 값이구요. 좀 더 정확한 표현은 `interface Test {}` 가 되겠네요

3. 제가 이해를 못했습니다. f2 의 타입은 F2 이고, F2 에서 매개변수 b 의 타입은 `string | number` 입니다

4. F1 이라는 함수 타입은 매개변수 b 가 문자열인 것만 처리할 수 있습니다. F2 는 문자열과 숫자 모두를 처리할 수 있습니다. 따라서 F2 함수 타입으로 만든 f2 를 사용(호출)하는 사람은 매개변수 b 에 숫자도 입력 가능합니다.
그런데 F1 의 매개변수 b 는 숫자를 처리할 수 없으므로 f1 을 f2 처럼 사용(호출)할 수 없습니다. 따라서 `f2 = f1;` 코드는 문제(에러)가 되는 것입니다. F2 가 F1 보다 유연하다고 할 수 있습니다. 
반대로 `f1 = f2;` 할당은 괜찮습니다. 문자열과 숫자를 처리할 수 있는 똑똑한 f2 를 f1 처럼 문자열만 입력하면서 사용할테니 전혀 문제(에러)가 되지 않습니다.

5. 타입과 값을 헷갈리시는 것 같아요. (많은 분들이 헷갈려 하십니다^^)
값을 할당한다고 타입이 변하지 않습니다. f1 은 문자열만 입력 가능한 타입이라고 선언을 했고, 그 사실은 변하지 않습니다. f2 라는 값은 문자열과 숫자를 모두 처리할 수 있도록 구현됐습니다. 하지만 f1 의 타입에 명시된 대로 문자열만 입력해서 사용할 겁니다. 그렇게 사용해도 전혀 문제가 되지 않습니다. 왜냐면 f2 는 문자열을 처리할 수 있으니까요.

0

Prov

감사합니다 

" ~ 처럼 사용하겠다 " 라는 말이 확 와닿았습니다!

0

Prov

선생님 그러면

여기서 "="의 의미는 변수처럼 덮어씌우기 같은 대입의 의미가 아니라

ex ) int a=1;

~처럼 사용하겠다라는 의미로 생각해야하나요 ?

0

이재승

아니요 대입이 맞습니다 :)

lodash 가 안될때

0

90

1

에궁 처음부터 막히네요...ㅜㅜ

0

75

1

[함수타입2] 함수 this에 대한 타입 부분, 제가 제대로 이해했을까요?

0

265

1

객체 할당 관련 질문 있습니다.

0

326

1

퀴즈 관련 질문이 있습니다.

0

343

1

공변성 강의

0

255

2

시간 4:31 인터페이스 타입가드에 대해

0

231

1

리턴값이 연산인 제네릭 에러 해결

0

427

2

code runner 사용 시 output이 깨지는 문제

0

2456

2

2: 38

0

196

1

5:55 내용에 대하여 질문드립니다.

0

440

2

extends에 관하여

0

293

1

return 타입

0

177

1

/bin/sh: node_modules/.bin/ts-node: No such file or directory 오류

0

363

1

Person 과 Product

0

208

1

tsc 기본이 es3

0

313

1

[#다시질문] Person과 Product 관계

0

160

1

타입스크립트 부분실행 질문드립니다

0

711

1

함수 타입2 에서 1:53

0

329

2

1:19 에서 interface String

1

272

2

안녕하세영 정리

0

166

1

this 질문

0

221

1

function add

0

176

2

타입스크립트 사용하는 이유 : 높은 생산성

0

197

2