summaryrefslogtreecommitdiff
path: root/CONTRIBUTING.md
diff options
context:
space:
mode:
authorsyuilo <syuilotan@yahoo.co.jp>2019-04-13 14:31:05 +0900
committersyuilo <syuilotan@yahoo.co.jp>2019-04-13 14:31:05 +0900
commitdaf9a449e818a0335f6dab378363f3bd65595021 (patch)
tree3fc5590b36df578810546b8bf71b1affdc327d05 /CONTRIBUTING.md
parenttypo (diff)
downloadmisskey-daf9a449e818a0335f6dab378363f3bd65595021.tar.gz
misskey-daf9a449e818a0335f6dab378363f3bd65595021.tar.bz2
misskey-daf9a449e818a0335f6dab378363f3bd65595021.zip
Update CONTRIBUTING.md
Diffstat (limited to 'CONTRIBUTING.md')
-rw-r--r--CONTRIBUTING.md19
1 files changed, 19 insertions, 0 deletions
diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md
index 844fda5490..3cc28bb4c8 100644
--- a/CONTRIBUTING.md
+++ b/CONTRIBUTING.md
@@ -137,3 +137,22 @@ SQLでは配列のインデックスは**1始まり**。
### `undefined`にご用心
MongoDBの時とは違い、findOneでレコードを取得する時に対象レコードが存在しない場合 **`undefined`** が返ってくるので注意。
MongoDBは`null`で返してきてたので、その感覚で`if (x === null)`とか書くとバグる。代わりに`if (x == null)`と書いてください
+
+### 簡素な`undefined`チェック
+データベースからレコードを取得するときに、プログラムの流れ的に(ほぼ)絶対`undefined`にはならない場合でも、`undefined`チェックしないとTypeScriptに怒られます。
+でもいちいち複数行を費やして、発生するはずのない`undefined`をチェックするのも面倒なので、`ensure`というユーティリティ関数を用意しています。
+例えば、
+``` ts
+const user = Users.findOne(userId);
+// この時点で user の型は User | undefined
+if (user == null) {
+ throw 'missing user';
+}
+// この時点で user の型は User
+```
+という処理を`ensure`を使うと
+``` ts
+const user = Users.findOne(userId).then(esure);
+// この時点で user の型は User
+```
+という風に書けます。