返回void的函数和函数类型有什么区别



我有两个接口;

interface A {
func: () => void;
} 
interface B {
func: Function;
}

AB接口之间有什么区别?

我认为使用Function类型不是一个好主意,甚至TS linter也警告你这是危险的,因为你没有提供功能方案:

不要将Function用作类型。Function类型接受任何类似函数的值。它在调用函数时不提供类型安全性,这可能是常见的错误来源。它还接受类声明之类的东西,类声明将在运行时抛出,因为它们不会用new调用。如果希望函数接受某些参数,则应明确定义函数形状。

所以最好使用之类的东西

interface A {
func: (a: string) => number;
}

顺便说一句,对于void函数,您也可以使用VoidFunction类型而不是() => void;

最新更新