繁体   English   中英

为什么Flow无法使用方法参数的默认值推断类型

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM