[英]Can I make a wrapper function with TypeScript using spread syntax, without having to specify arguments and types?
以下代码是在 JavaScript 中实现包装函数的一种常见且非常简洁的方式。
代码用包装器outerFunction
包装了innerFunction
(它有一些命名参数):
function innerFunction(firstArgument, secondArgument, thirdArgument) {
console.log('innerFunction', arguments);
}
function outerFunction() {
console.log('outerFunction', arguments);
innerFunction(...arguments)
}
outerFunction(1, 2, 3);
这在 JavaScript 中工作得非常好- 您可以看到outerFunction
将任何参数传递给innerFunction
:
outerFunction [Arguments] { '0': 1, '1': 2, '2': 3 }
innerFunction [Arguments] { '0': 1, '1': 2, '2': 3 }
Typescript 不喜欢这样,因为它希望我将内部函数类型放入外部函数中。
在 TypeScript 中是否有更好的方法来做到这一点? 肯定 TypeScript 的静态分析可以看到外部函数从内部函数获取其类型?
我接受的答案可能是“不,您必须将内部函数的类型添加到外部函数”。 但我想在这里咨询我的同行,以防有更好的方法来做到这一点。
Typescript 提供了一个实用程序类型Parameters ,它以元组的形式为您提供函数参数的类型。 所以你可以像下面这样输入外部函数:
function innerFunction(firstArgument: string, secondArgument: number, thirdArgument: boolean) {
console.log('innerFunction', firstArgument, secondArgument, thirdArgument);
}
function outerFunction(...args: Parameters<typeof innerFunction>) {
console.log('outerFunction', ...args);
innerFunction(...args);
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.