我正在尝试在打字稿中编写一个防反跳函数,但是不确定要设置分配给setTimeout
的变量的类型。我的代码如下:
function debounced(func: () => void, wait: number) {
// what type should timeout be here?
let timeout: any;
return () => {
if (timeout) {
clearTimeout(timeout);
}
timeout = setTimeout(() => {
func();
}, wait);
};
}
答案 0 :(得分:3)
如果您希望代码在node.js和浏览器环境之间可移植,则可以使用setTimeout
的返回类型,如下所示:
let timeout: ReturnType<typeof setTimeout>;
因为已声明在节点和浏览器中返回不同的类型。
答案 1 :(得分:0)
Typescript优先考虑自定义类型定义,而不是默认类型。
如果您的tsconfig.json文件包含types: node
,则表示Typescript使用在 node_modules / @ types / node 中找到的setTimeout(): NodeJS.Timeout
,而不是默认的{{1 }}方法。
setTimeout(): number
如果您不需要该类型选项,请将其删除,该错误将消失:
"compilerOptions": {
"types": [
"node",
...
]
}
答案 2 :(得分:0)
如果您只是使用浏览器,显式调用 layout(
yaxis = list(
tickformat = ".1%",
tickvals = seq(.02,.06, .005)
))
应该可以解决这个问题。