【发布时间】:2015-12-29 21:07:37
【问题描述】:
如果config 参数有默认值,我该如何定义它的类型?
function (config = {}) {};
【问题讨论】:
标签: flowtype
如果config 参数有默认值,我该如何定义它的类型?
function (config = {}) {};
【问题讨论】:
标签: flowtype
胖箭头函数中的流类型和默认参数的工作方式类似。
给定一个名为 foo 的函数,它接受参数 bar,您可以在参数之后立即用冒号指定类型,然后使用赋值 (=) 运算符设置其默认值。最后,在结束括号后,立即用另一个冒号定义返回值的类型。
foo = (bar: string = 'baz'): string => bar;
foo(); // 'baz'
【讨论】:
function f(config: Object = {}) {}
或者,更一般地说:
function f(p: T = v) {}
其中T 是一个类型,v 是一个T 类型的值。
有趣的是,函数f 的类型是(p?: T): void。也就是说,Flow 理解提供默认值会使参数成为可选参数。您不需要显式地将参数类型设为可选——尽管这并没有什么坏处。
在.js.flow 文件中写入declare function 语句时,不能包含默认值;它会导致错误。所以你必须明确声明该参数是可选的:
declare function f(p?: T): void;
【讨论】: