TypeScript Interfaces メモ

1/9(木)

http://www.typescriptlang.org/docs/handbook/interfaces.html

Introduction

  • TSはduck typingでありstructural subtypingである

Our First Interface

  • TSは要求されているプロパティがあるかだけをチェックする

Optional Properties

  • プロパティ名の後ろに?をつけるとoptionalになる

Readonly properties

  • プロパティ名の前にreadonlyをつけると書き換え不可になる
  • ReadonlyArray<T> というやつもあるぞ

Excess Property Checks

  • 要求されているプロパティがあるかだけをチェックする とoptionalを組み合わせると、optional propertyのプロパティ名のtypoが型エラーにならなくなる
  • でもtypoはバグとして検出したい…検出したくない?
  • なのでTSはプロパティ名を手書きする(リテラル)ときは特別に excess property checking をする
    • Object literal may only specify known properties, but 'hoge' does not exist in type 'Fuga'.
  • excess property checking を回避する方法
    • as
    • interfaceの方に [propName: string]: any; を足しておく
    • 一度変数に入れる

全員集合

1/8(水)

今日は基本的に姿を表さない第4の男が久々に出現した。そんな日もある。

ああ、会社員に戻ると書くことがない。ランチは唐揚げ定食。夕食は鍋。米の量を半分にしたらちょうどよかった。

温度管理サーバーが形になったので次は何を作ろうかと考えている。何がいい?

2020仕事初め

1/6(月)

ぬるりと会社員に戻った。まだ休んでいる人が多く自分自身も会社もリハビリ中という感じだ。

冬だし鍋でもやるかと思って材料を買って帰った。鶏肉と白菜、そして鍋キューブ(水に溶かすと味がつくやつ)。ご飯も炊いたら多すぎた。

なんとなく気分だったので掃除をした。同僚がうるさく「床に散乱した野菜を片付けろ」というのでついに片付けた。床に野菜が散乱しているくらいなんだというんだ。

axios.getの型

1/3(金)

自宅の気温や湿度を表示するwebアプリをいろいろとリファクタリングしていた。APIを叩いたレスポンスには型の保証がないが、 axios.get にジェネリクスを与えておけばその型が来たという想定で書くことができていい感じだった。このコードで渡すジェネリクスを更に外から与えられるT型にしているのは、インフラ層でドメイン層で定義した型を使ってはいけないから(ホンマか?)。

moment.jsはめちゃ便利。JavaScriptの組み込みのURLオブジェクトはパスの結合が便利にできるかと思いきやそうでもない。ホストとパスの結合だけ。