E4074

E4074#

本错误代码会在顶层声明缺少类型标注时出现。MoonBit 要求顶层的变量声明和函数定义都有完整的类型标注,因为顶层定义的类型标注是重要的文档。

上述要求有两个例外:

  • 如果顶层 let 定义的值是一个简单的字面量,可以省略类型标注:

    pub let forty_two = 42
    pub let float = 1.0
    pub let string = "Hello, world!"
    pub let array = [1, 2, 3]
    
  • 如果顶层 let 是某个来自外部的函数的私有别名,也可以省略标注。此时,值的类型可以轻松被推导出。但是,对于 pub let,MoonBit 依然要求类型标注,因为这种类型标注是重要的文档。

错误示例#

let a = 1 + 1 // Error: Cannot infer the type of variable a, please add more type annotation.

建议#

这两个错误可以通过显式注释变量的类型来修复:

let a : Int = 1 + 1