Просмотр исходного кода

Re-write the rule about casting to be clearer (#26317)

This is the proposal from the comments on https://github.com/vector-im/element-web/pull/26220
(so effectively an alternative to that PR, if you like).
David Baker 2 лет назад
Родитель
Сommit
aae59b93e6
1 измененных файлов с 9 добавлено и 7 удалено
  1. 9 7
      code_style.md

+ 9 - 7
code_style.md

@@ -113,15 +113,17 @@ Unless otherwise specified, the following applies to all code:
     }
     ```
 
-14. Explicitly cast to a boolean, rather than relying on implicit truthiness of non-boolean values:
+14. If a variable's type should be boolean, make sure it really is one.
 
     ```typescript
-    const isRealUser = !!userId && ...;
-    // ... or ...
-    const isRealUser = Boolean(userId) && ...;
-
-    // but *not*:
-    const isRealUser = userId && ...;   // invalid implicit cast
+    const isRealUser = !!userId && ...; // good
+    const isRealUser = Boolean(userId) && Boolean(userName); // also good
+    const isRealUser = Boolean(userId) && isReal; // also good (where isReal is another boolean variable)
+    const isRealUser = Boolean(userId && userName); // also fine
+    const isRealUser = Boolean(userId || userName); // good: same as &&
+    const isRealUser = userId && ...;   // bad: isRealUser is userId's type, not a boolean
+
+    if (userId) // fine: userId is evaluated for truthiness, not stored as a boolean
     ```
 
 15. Use `switch` statements when checking against more than a few enum-like values.