当参数具有默认值时定义类型的语法是什么?
What is the syntax for defining a type when parameter has a default value?
如果 config
参数具有默认值,我该如何定义它的类型?
function (config = {}) {};
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;
粗箭头函数中的流类型和默认参数的工作方式类似。
给定一个名为 foo
的函数,它接受参数 bar
,您可以在参数后立即用冒号指定类型,然后使用赋值 (=) 运算符设置其默认值。最后,在关闭括号后,立即用另一个冒号定义 return 值的类型。
foo = (bar: string = 'baz'): string => bar;
foo(); // 'baz'
如果 config
参数具有默认值,我该如何定义它的类型?
function (config = {}) {};
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;
粗箭头函数中的流类型和默认参数的工作方式类似。
给定一个名为 foo
的函数,它接受参数 bar
,您可以在参数后立即用冒号指定类型,然后使用赋值 (=) 运算符设置其默认值。最后,在关闭括号后,立即用另一个冒号定义 return 值的类型。
foo = (bar: string = 'baz'): string => bar;
foo(); // 'baz'