Flow 文档建议谨慎使用 Function
和 Object
类型。如果是这样的话,我应该使用什么?以下是几个场景:
export function executeFunction(someFunc) {
someFunc.call(this, 'whatever');
}
export function processThing(someObj) {
// ...
}
注释这些的正确方法是什么? (注意:someObj
可以是任何对象......并且它可以有几十个方法和属性,我不想在注释中全部输入这些)
最佳答案
首先,由于您没有使用 processThing
的输出,我认为它不会返回任何内容,因此您可以为此添加注释:
export function processThing(someObj): void {
<小时/>
关于 someObj
...您希望在传递和访问该对象时具有类型安全性吗?
否:考虑使用 any
、mixed
或 Object
类型进行注释,具体取决于您的具体含义通过“任何”。
是:您必须对其进行注释。您可以内联编写其类型,但也可以在其他位置(包括在不同的文件中)定义该类型,并根据需要在多个位置重用它。例如,像这样:
type Thing = {
foo: string;
bar: number;
}
// ...
export function processThing(someObj: Thing): void {
如果 someObj
预计是某个 ES6 类的实例,您也可以将该类用作类型(请参阅 docs )。
对于 executeFunction
,您可以指定您想要一个接受 Thing
作为其第一个参数且不返回任何内容的函数:
export function executeFunction(someFunc: (something: Thing) => void) {
关于javascript - 在 Flow 中使用什么来代替函数和对象类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38112908/