[英]Why Flow can not infer type with default value of method parameter
当您编码此方法时:
// @flow
function greeting (name: string = 8): string {
return `Hello ${name}!!`
}
流检查默认值是错误的,对我来说还可以,但是使用以下代码:
// @flow
function greeting (name = 'world'): string {
return `Hello ${name}!!`
}
greeting(8)
使用数字参数没有错误,就像我期望的那样
function greeting (name: string = 'world'): string {
return `Hello ${name}!!`
}
为什么不能用默认值推断类型?
预先感谢。
这是因为在您的示例中,该函数返回一个字符串,但没有为name
参数声明类型。
由于您是使用反引号(``)将name
插值到字符串中的,因此即使它是数字,其类型也会隐式转换为字符串。 因此,只要您返回一个字符串-您的符号就可以了。
如果您希望流程出错,可以执行以下操作:
function greeting (name: string = "name"): string {
return `Hello ${name}!!`
}
然后,当您这样称呼它时:
greeting(8);
您将收到以下错误:
greeting(8)
^ Cannot call `greeting` with `8` bound to `name` because number [1] is incompatible with string [2].
References:
6: greeting(8)
^ [1]
2: function greeting (name: string = "name"): string {
整个过程都围绕推理。 想象以下情况:
function(name: string | number = "name") {..
在此表示法中, name
可以是字符串或数字。
流程没有办法知道你的意图有一个默认值的方式,因此它推断出的一切, any
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.