과부하가있는 함수가 있습니다.TypeScript 오버로드 및 선택적 인수
function foo(x: number, y: void): void;
function foo(x: number, y: number | string): number;
function foo(x: number, y: any) {
if (typeof y === "undefined") {
return;
}
return typeof y === "string"
? x/parseFloat(y)
: x/y;
}
대신 y
에 대한 선택적 인수를 사용하는, 내가 특별히 반환 값을 지정 void
를 사용합니다. 의도 된 사용 사례에는 undefined
을 두 번째 인수로 사용하는 사례가 포함됩니다. 다른 함수에서
, 나는 그렇게 같이 호출합니다 :
function bar(x: number, y?: number | string) {
const f = foo(x, y);
// Some other stuff
}
이 다음과 같은 유형의 오류가 발생합니다
Argument of type 'string | number | undefined' is not assignable to parameter of type 'string | number'.
Type 'undefined' is not assignable to type 'string | number'.
나의 이해는 foo
가 두 번째 인수 string | number | void
으로 수행하게되었다, bar
을 호출하면 string
, number
또는 void
중 하나가 전달되고 TypeScript는 foo
' 반환 값.
의도 한 효과를 얻는 올바른 방법은 무엇입니까?