跳到主要内容

avoid_as

已移除

避免使用 as

详情

#

注意:此规则已在 Dart 3 中从 SDK 中移除;它不再起作用。它的建议是编译器特定的,并且在很大程度上因空安全而过时。

避免 (AVOID) 使用 as

如果您知道类型正确,请使用断言或赋值给类型更窄的变量(这避免了发布模式下的类型检查;as 在发布模式下不会被编译掉)。如果您不知道类型是否正确,请使用 is 进行检查(这避免了 as 引发的异常)。

错误示例 (BAD)

dart
(pm as Person).firstName = 'Seth';

正确示例 (GOOD)

dart
if (pm is Person)
  pm.firstName = 'Seth';

但绝不是 (but certainly not)

错误示例 (BAD)

dart
try {
   (pm as Person).firstName = 'Seth';
} on CastError { }

请注意,在 dynamic 的情况下会有一个例外,因为强制转换对性能没有影响。

可以 (OK)

dart
HasScrollDirection scrollable = renderObject as dynamic;

启用

#

要启用 avoid_as 规则,请在您的 analysis_options.yaml 文件中的 linter > rules 下添加 avoid_as

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_as

如果您改为使用 YAML 映射语法来配置 linter 规则,请在 linter > rules 下添加 avoid_as: true

analysis_options.yaml
yaml
linter:
  rules:
    avoid_as: true