gpt4 book ai didi

typescript - 如何为函数设置类型作为函数参数并且可以有任何参数和任何返回

转载 作者:行者123 更新时间:2023-12-05 02:38:36 25 4
gpt4 key购买 nike

我想用 typescript 写一个去抖功能。我的代码如下所示:

function debounce(fn: Function, time: number): Function {
// ...
}

然后,我的 eslint 告诉我不要使用 Function 作为类型。以下为原文:

不要将Function 用作类型。 Function 类型接受任何类似函数的值。它在调用函数时不提供类型安全,这可能是错误的常见来源。它还接受类声明之类的东西,这些东西将在运行时抛出,因为它们不会被 new 调用。

如果您希望函数接受某些参数,您应该明确定义函数形状。

就是这个问题,有什么建议吗?

====================一些更新========================= =========

如果使用 javascript,我的代码将是:

function debounce(fn, time) {
let timer
return function (...args) {
clearTimeout(timer)
timer = setTimeout(() => fn(...args), time)
}
}

最佳答案

我建议您查看 TypeScript 的 utility types ,例如 Parameters<Type>ThisParameterType<Type> .它们是我用于 my TypeScript implementation of a debounce function 的使返回函数与输入函数的签名匹配。

至于我如何指定函数参数,我使用了这样的泛型:

const debounce = function<T extends (...args: any) => any> (fn: T, delay: number) {

关于typescript - 如何为函数设置类型作为函数参数并且可以有任何参数和任何返回,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69503118/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com