跳到主要内容

yield_of_invalid_type

类型为“{0}”的 yielded 值必须可以赋值给“{1}”。

由 'yield*' 表达式推断出的类型“{0}”必须可以赋值给“{1}”。

描述

#

yieldyield* 表达式生成对象的类型与生成器(使用 sync*async* 标记的函数或方法)返回的 IterableStream 类型应返回的对象类型不匹配时,分析器会生成此诊断信息。

示例

#

以下代码会产生此诊断信息,因为 getter zero 被声明为返回一个生成整数的 Iterable,但 yield 却从该 iterable 返回了一个字符串。

dart
Iterable<int> get zero sync* {
  yield '0';
}

常见修复方法

#

如果函数的返回类型正确,则修改关键字 yield 后面的表达式以返回正确的类型。

dart
Iterable<int> get zero sync* {
  yield 0;
}

如果 yield 后面的表达式正确,则更改函数的返回类型以允许它。

dart
Iterable<String> get zero sync* {
  yield '0';
}