Flow文档建议谨慎使用Function
和Object
类型。如果是这样的话,我应该使用什么?以下是几个场景:
export function executeFunction(someFunc) {
someFunc.call(this, 'whatever');
}
export function processThing(someObj) {
// ...
}
注释这些的正确方法是什么? (注意:someObj
可以是任何对象..它可能有许多方法和属性,我不想在注释中输入全部内容)
答案 0 :(得分:1)
嗯,首先,因为你没有使用processThing
的输出,我认为它什么都不返回,所以你可以为它添加一个注释:
export function processThing(someObj): void {
关于someObj
...您是否希望在传递和访问该对象时具有类型安全性?
否:考虑使用any
,mixed
或Object
类型对其进行注释,具体取决于“any”的具体含义。
是的:您必须对其进行注释。您可以在线编写其类型,但您也可以在其他位置定义类型(包括在不同的文件中),并在需要时在多个位置重复使用。例如,像这样:
type Thing = {
foo: string;
bar: number;
}
// ...
export function processThing(someObj: Thing): void {
如果预期someObj
是某个ES6类的实例,您也可以将该类用作类型(请参阅docs)。
对于executeFunction
,您可以指定您希望接受Thing
作为其第一个参数的函数,并且不返回任何内容:
export function executeFunction(someFunc: (something: Thing) => void) {