오버로딩에서 오류가 뜨는 이유
279
작성한 질문수 34
답변 3
1
친절한 답변 너무나 감사드립니다~3번째 줄에 유니언이 있어서 함수 실행시 매개변수가
숫자 / 문자 혹은 문자 /숫자 순서대로 들어오면 3번째 라인이 실행되고
결국 else문이 동작해서에러가 없을 줄 알았는데 이게 아닌건가요?
1
안녕하세요
add 함수를 실제로 구현하는 부분의 타입(3번째줄)은 구현부에서만 사용되고 실제 호출하는 쪽에서는 사용되지 않습니다.
따라서 사용하는 쪽에서는 x, y 가 둘 다 숫자이거나 문자열이어야 합니다.
그래서 add(1,'10') 부분에서 타입 에러가 발생합니다.
참고로 Number('10') 의 결과는 NaN 은 아니고 숫자 10입니다.
결국 첫 번째와 두 번째 줄은 타입만 정의한 코드이구요
v1, v2, v3 모두 세 번째 줄에서 정의한 함수를 실행합니다.
타입 오류를 무시하고 실행한다면 v3 는 11 이 됩니다
혹시 이해가 안되시면 또 질문주세요~!
0
compile-time과 run-time 으로 나눠서 보는 게 좋을 것 같아요
타입 정보는 compile-time 에만 사용됩니다. 따라서 코드가 실행(run-time)될 때는 전혀 영향을 주지 않습니다
`const v3 = add(1,'10');` 코드는 run-time 에 에러 없이 잘 실행이 됩니다
하지만 compile-time 에는 타입 에러가 발생합니다. (모두 숫자이거나 모두 문자열이라고 타입 정의가 되어 있어서요)
타입스크립트 빌드(compile-time) 시에 타입 에러를 무시하고 빌드할 수 있는 옵션이 있는데요
그렇게 나온 결과물(js 파일)로 실행하면 에러 없이 잘 실행이 될거에요
우리가 vscode 같은 IDE 에서 빨간줄로 만나는 것은 compile-time 의 타입 에러 입니다
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
428
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
177
2
타입스크립트 사용하는 이유 : 높은 생산성
0
197
2





