setInterval(
(function func() /* :() => ??? */ {
console.log(`I will be invoked immediately!`);
return func;
})(),
10000
);
你好,我是打字的新手。
我曾经在JS中以这种方式使用setInterval()
,这样我就可以立即调用setInterval()
的回调函数,而不是在第一次运行之前等待10秒。然而,当我现在转到TS时,我不知道在这里放什么作为它的返回类型。我试着像使用() => any
一样使用any
,但似乎它可能会打破@typescript eslint:Missing return type on function.eslint(@typescript-eslint/explicit-function-return-type)
的规则。
有人能给我一些建议吗?提前谢谢。
p.s.我知道我使用setInterval()
的方式可能不好,但我只想摆脱它。
我会避免任何在所有情况下强制显式类型的lint规则,或者至少我可能会在这个用例中禁用它。
如果保持函数不变,Ts将正确地推断返回类型。
如果你想拼写出来,你可以使用递归类型:
type Fn = () => Fn;
setInterval(
(function func() : Fn {
console.log(`I will be invoked immediately!`);
return func;
})(),
10000
);
您可以像TS定义的那样定义它:typeof func
。
function func(): typeof func { ... }
这是明确地说,函数返回一个具有自己签名的函数,因此它也是可表达的。