LoginSignup
11
10

More than 3 years have passed since last update.

効果的なTypeScriptを読んで学んだ4つのこと

Last updated at Posted at 2020-11-21

こちらの記事は、Kaylie Kwon 氏により2020年1月に公開された『 4 Things I Learned from Reading Effective TypeScript 』の和訳です。
本記事は原著者から許可を得た上で記事を公開しています。

効果的なTypeScriptを読んで学んだ4つのこと

壁の前で本で彼女の顔を覆っている

Photo by Siora Photographyon Unsplash

数日前、私は長時間のフライトでダン・ヴァンダーカム氏の効果的なTypeScript(以下TSとする)を読み終えました。(正確には8時間!)
その本は非常に実践的なアドバイスで簡潔に書かれています。本を読んでいただくことをお勧めしますが、ここに私のお気に入りのコツがいくつかあるのでご紹介します。

1.エラーによるオブジェクトの変更を防ぐため、“ readonly “を使用すること

配列またはタプルがreadonlyとしてマークされている場合、ユーザーがそれらのオブジェクト内の項目を追加、削除、または更新しようとするとTSはエラーが発生。これは副作用を回避するための関数型プログラミングで特に役立つ。

画像1

2.型の再利用性については関数宣言よりも関数式を優先すること

同じ関数シグネチャを持つユーティリティを書き込むと少し繰り返しになる可能性がある。
以下に、入力タイプと出力タイプを毎回再度書き出す必要がある3つのカート関連関数を示す。

画像2
DRY原則を維持するにはシグネチャ全体を関数型に割り当て、関数式の使用に切り替えることができる。

画像3

3.より良い型安全性を得るためにどれよりもunknownを好むこと

anyを使用すれば便利なエスケープハッチになる可能性があるが、それを回避する正当な理由もある。どんな型安全性も保証するものではなく、コールチェーンの上位のコンシューマーからエラーを隠す。
型がunknownの場合にはTSは存在しないメソッドを呼び出す等のエラーを正しく表示する。

画像4

開発者がコンパイラよりも型についての知識が豊富な場合は意図を明確にするためにダブルアサーションと共にunknownを使用することもできる。

画像5

4.より良い開発経験のためにJSDocもしくはTSDocスタイルのコメントに傾倒すること

ほとんどの場合においてコメントに型情報を含めることは避けるべき。ただし、移行し、JSを使用してTSを有効にする場合、または関数に関する追加情報を提供したい場合にはJSDocもしくはTSDocが型チェックを行い、IDEと統合するための優れた方法だ。

画像6

注意:VSCodeは適切にフォーマットされたコメントをツールチップに表示する。

画像7


これでおしまい!
これらのコツを選択したのは既存のコードベースの改善にすぐに適用できるから。お役に立てば幸いです。

翻訳協力

Original Author: Kaylie Kwon
Original Article: 4 Things I Learned from Reading Effective TypeScript
Thank you for letting us share your knowledge!

この記事は以下の方々のご協力により公開する事が出来ました。
改めて感謝致します。
選定担当: Rie Miyazaki
翻訳担当: Miho Abe
監査担当: Rie Miyazaki
公開担当: Juri Kimoto

ご意見・ご感想をお待ちしております

今回の記事は、いかがだったでしょうか?
・こうしたら良かった、もっとこうして欲しい、こうした方が良いのではないか
・こういったところが良かった
などなど、率直なご意見を募集しております。
いただいたお声は、今後の記事の質向上に役立たせていただきますので、お気軽にコメント欄にてご投稿ください。Twitterでもご意見を受け付けております。
みなさまのメッセージをお待ちしております。

11
10
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
10