作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想用 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/
我是一名优秀的程序员,十分优秀!