Person과 Product의 관계
196
작성한 질문수 18
안녕하세요
혹시 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로 인식 되어 정상적으로 결과를 출력해야 맞는것이 아닌가요 ?!
답변 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 는 문자열을 처리할 수 있으니까요.
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





