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 ぐうの音も出ない