返回自身的函数的返回类型是什么


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 { ... }

这是明确地说,函数返回一个具有自己签名的函数,因此它也是可表达的。

最新更新