VSCode 对于 bar 的返回类型显示 String,对于 foo 的返回类型显示 dynamic。
void main() {
bar() => 'bar'; // String bar()
}
foo() => 'foo'; // dynamic bar()
最佳答案
Dart 的类型推断算法对于顶级声明和局部声明是不同的。 这是因为顶级声明都可以互相引用,而局部声明只能引用较早的局部声明(或顶级声明,但这些声明是首先推断的,因此此时它们是安全的)。
因此,顶层推理不如局部类型推理聪明,但它也可以在合理的时间内确定。
在顶级和类级别声明上编写类型。这样更安全。
关于dart - 当不指定返回类型时,dart 显示另一个函数内部的精确返回类型,但对于顶层是动态的,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72662621/