我有两个接口;
interface A {
func: () => void;
}
interface B {
func: Function;
}
A
和B
接口之间有什么区别?
我认为使用Function
类型不是一个好主意,甚至TS linter也警告你这是危险的,因为你没有提供功能方案:
不要将Function
用作类型。Function
类型接受任何类似函数的值。它在调用函数时不提供类型安全性,这可能是常见的错误来源。它还接受类声明之类的东西,类声明将在运行时抛出,因为它们不会用new
调用。如果希望函数接受某些参数,则应明确定义函数形状。
所以最好使用之类的东西
interface A {
func: (a: string) => number;
}
顺便说一句,对于void函数,您也可以使用VoidFunction
类型而不是() => void;