当parameter具有默认值时,定义类型的语法是什么?



如果config参数有默认值,我如何定义它的类型?

function (config = {}) {};

function f(config: Object = {}) {}

或者,更一般地:

function f(p: T = v) {}

其中T为类型,vT类型的值。

有趣的是,函数f的类型是(p?: T): void。也就是说,Flow理解提供默认值使参数成为可选的。您不需要显式地将参数类型设置为可选的——尽管这没有什么害处。

.js.flow文件中写入declare function语句时,不能包含默认值;这会导致错误。因此,必须显式声明该参数是可选的:

declare function f(p?: T): void;

粗箭头函数中的流类型和默认参数的工作原理类似。

给定一个名为foo的函数,它接受参数bar,在参数后面用冒号指定类型,然后用赋值操作符(=)设置它的默认值。最后,在括号结束后,用另一个冒号定义返回值的类型。

foo = (bar: string = 'baz'): string => bar;
foo(); // 'baz'

最新更新