cat posts/typescript-%e3%81%ae%e5%9e%8b%e3%81%8c%e6%80%96%e3%81%8f%e3%81%aa%e3%81%8f%e3%81%aa%e3%81%a3%e3%81%9f%e6%97%a5.md

【悲報】ワイ、型エラーを全部 as any で黙らせてしまう

1 風吹けば名無し 2026/06/14(日) 21:04:00 ID:Ty9pE0sc
TypeScript 書き始めたんやけど、型システムがただの障害物にしか見えん
エラー出るたびに // @ts-ignore と as any で黙らせとるわ

2 風吹けば名無し 2026/06/14(日) 21:05:23 ID:Mq3xB7de
>>1 それただの JavaScript やん

3 風吹けば名無し 2026/06/14(日) 21:06:08 ID:Ty9pE0sc
>>2 ぐうの音も出ない

4 風吹けば名無し 2026/06/14(日) 21:07:16 ID:Vn8kL2ap
最初はみんなそうやろ
ワイも「JS に型書かせる謎の言語」くらいにしか思ってなかったわ

5 風吹けば名無し 2026/06/14(日) 21:08:47 ID:Ty9pE0sc
転換点あってな
API レスポンスをそのまま使い回しとったコードをリファクタしたんや
型をちゃんと定義したらコンパイラが「そのプロパティ undefined かもしれんぞ」て言うてきた

6 風吹けば名無し 2026/06/14(日) 21:09:40 ID:Mq3xB7de
で、実際どうやったんや

7 風吹けば名無し 2026/06/14(日) 21:10:56 ID:Ty9pE0sc
>>6 本番でたまに落ちとった箇所やった

// 以前
const name = user.profile.name; // undefined で落ちることがあった

// 型をつけてから
type User = {
  profile: {
    name: string | null;
  } | null;
};
const name = user.profile?.name ?? '名無し'; // コンパイラに気づかされた

8 風吹けば名無し 2026/06/14(日) 21:11:34 ID:Vn8kL2ap
>>7 コンパイラのほうが優秀で草

9 風吹けば名無し 2026/06/14(日) 21:12:35 ID:Rf5wQ9zh
ワイもそれで ?? 使うようになったわ

10 風吹けば名無し 2026/06/14(日) 21:13:59 ID:Ty9pE0sc
それ以来、型を「制約」やなくて「ドキュメント」として書くようになった
関数の引数と戻り値を先に型で書くと実装の迷いが減るんや

11 風吹けば名無し 2026/06/14(日) 21:14:45 ID:Rf5wQ9zh
>>10 わかる 型書いてる時点で設計してるからな

12 風吹けば名無し 2026/06/14(日) 21:15:54 ID:Ty9pE0sc
今は as any 書くたびに「後で絶対ここで泣く」って思うわ
向き合い方変えただけでバグの発見が前工程に移動した感覚ある

13 風吹けば名無し 2026/06/14(日) 21:17:26 ID:Mq3xB7de
@ts-ignore はいつ消すんや

14 風吹けば名無し 2026/06/14(日) 21:18:20 ID:Ty9pE0sc
>>13 ぐうの音も出ない