跳到主要內容

avoid_type_to_string

穩定版

避免在生產程式碼中使用 .toString(),因為結果可能會被精簡。

詳情

#

避免在生產程式碼中呼叫.toString(),因為它並未約定返回 Type(或底層類)的使用者定義名稱。開發模式編譯器不關注程式碼大小,會使用完整名稱,但釋出模式編譯器通常會精簡這些符號。

不推薦

dart
void bar(Object other) {
  if (other.runtimeType.toString() == 'Bar') {
    doThing();
  }
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.runtimeType.toString());
}

推薦

dart
void bar(Object other) {
  if (other is Bar) {
    doThing();
  }
}

class Thing {
  String get thingTypeKey => ...
}

Object baz(Thing myThing) {
  return getThingFromDatabase(key: myThing.thingTypeKey);
}

啟用

#

要在您的 analysis_options.yaml 檔案中啟用 avoid_type_to_string 規則,請在 linter > rules 下新增 avoid_type_to_string

analysis_options.yaml
yaml
linter:
  rules:
    - avoid_type_to_string

如果您使用 YAML 對映語法來配置 Linter 規則,請在 linter > rules 下新增 avoid_type_to_string: true

analysis_options.yaml
yaml
linter:
  rules:
    avoid_type_to_string: true