Appearance
通过拆分获取类型推断
题目
防抖函数的类型标注, 要求防抖函数的返回类型为void
ts
namespace Question {
declare function debounce(obj: Function): Function;
function handler(a: number, b: number) {
return a + b;
}
const dHandler = debounce(handler);
dHandler();
}
namespace Question {
declare function debounce(obj: Function): Function;
function handler(a: number, b: number) {
return a + b;
}
const dHandler = debounce(handler);
dHandler();
}
1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
解法
ts
namespace Answer {
declare function debounce<A extends any[], R>(
fn: (...args: A) => R,
duration?: number
): (...args: A) => void;
function handler(a: number, b: number) {
return a + b;
}
const dHandler = debounce(handler);
dHandler(3, 4);
}
namespace Answer {
declare function debounce<A extends any[], R>(
fn: (...args: A) => R,
duration?: number
): (...args: A) => void;
function handler(a: number, b: number) {
return a + b;
}
const dHandler = debounce(handler);
dHandler(3, 4);
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14