エンターテイメント!!

遊戯王好きのJavaエンジニアのブログ。バーニングソウルを会得する特訓中。

Typescriptの型とデータ構造で相当悩んだ話

きっかけ

くだらないことで相当悩んでしまったので、戒めのためにのせる

内容の詳細

どういったことが起きたかと言うと、HTTPでデータの受け渡しをする際に、データ構造を間違えて渡しているのになかなか気づけず、1日近い時間を無駄にしてしまった。。。

簡易的な例

似たような事が、下記のような内容。
本当は、test.a の内容を表示したいのだが、実際は、undefinend。
なぜ違うんだ?ってかなり悩んだ。

class Test {

  main(): void {
    const args = { test: { a: 3 } };
    new Sub().execute(args);
  }
}

class Sub {

  execute(test: any): void {
    console.log(test.a)
  }
}

new Test().main()

マジで恥ずかしいぜ。。。

どうすれば良かったのか

デバックとかも、同じ名前だったので、ちゃんとあるじゃンって思ってしまいました。
目がイカれているのでしょうね。。

個人的に考えた結果、やっぱり、any型を消すことだろうな。
必ずなくせばいいってわけでもないが、なるべく消したほうが無難でしょうね。

でも、それでも発生するよな。。。
実行時に型の情報が消えるから、実行時に予想してないデータ構造になると、アウトですわ。。。
とくに結合が疎になるネットワーク越しは、発生しやすいでしょうね。

なので、ネットワーク越しでデータがうまく連携できなかったら、渡せてないと一緒に、構造がおかしいっていう選択肢を入れて考えないとイケないですな。。。