[過去ログ] TypeScript part3 (1002レス)
前次1-
抽出解除 必死チェッカー(本家) (べ) 自ID レス栞 あぼーん

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
966
(2): 2021/12/30(木)19:17 ID:zuTar3e4(1/7) AAS
>>963
型が嘘をつけることとバリデーションは別次元の話

>>964
明示的キャストなんかしなくてもTSにはいくらでも型が嘘をつく罠がある
代表的なところだとjsonのパース、DBのI/O、api I/O、野良ライブラリのI/O、、、
967
(2): 2021/12/30(木)19:25 ID:zuTar3e4(2/7) AAS
言語仕様を変えるべきなんだろうな
typeで宣言した変数への代入は実行時に型チェック付きのマッピングにトランスレートすべき
ついでに言うとtypeで未定義の属性はマッピングするときにundefinedにすべき
これだけでTypeScriptによくある馬鹿馬鹿しいバグがかなり減るはずだ

type Foo {
x: string;
y: number; }
省4
969: 2021/12/30(木)19:34 ID:zuTar3e4(3/7) AAS
Javaは最も優れた設計でそもそもanyみたいな言語仕様がない
Objectは定義できるが暗黙のキャストでスルッと行くなんてことはあり得ないし無理やりキャストしたって実行時に必ず例外が飛ぶ
C#はanyに近いものでdynamicというのがあるがこれも誤ったキャストには実行時に例外が飛ぶ
どちらも型が嘘をつかないように言語基盤がしっかり担保してくれるから型を信用していい
当たり前のことを当たり前にやってくれる堅実な言語だ
970
(1): 2021/12/30(木)19:36 ID:zuTar3e4(4/7) AAS
>>968
このコードは説明のためのスニペットだ
現実的にこんなコード書くわけないだろ
現実的には先に挙げたような状況でanyと戦わなければならない
974
(1): 2021/12/30(木)19:59 ID:zuTar3e4(5/7) AAS
>>971
バリデーションってのは値が正しいかどうか検証するものであって型が嘘をついているかどうか調べるためのものじゃない

どこで型が嘘をついているか確実に判断することはむずかしい
自分達の管理するコードベースの外界とのI/Oは全て疑わしい
先も述べたようにJsonのパース、ApiのIO、DBのIO、野良ライブラリのIO
疑わしい箇所が多すぎる

型が嘘をつかない言語なら外界とのI/Oの型定義が信用できる
省3
975: 2021/12/30(木)20:05 ID:zuTar3e4(6/7) AAS
>>972
構造的部分型もわかりにくいバグの温床だな
anyよりは全然マシだが
まあ楽なのは楽だよそれはわかる
ただ楽なのと安全でりかいしやすいのとは同じじゃないからね

typeは俺が言ったような真の意味で型安全を担保するための仕様
interfaceは構造的部分型でサボるための仕様
省1
976: 2021/12/30(木)20:09 ID:zuTar3e4(7/7) AAS
>>972
セールポイントであり最大の弱点でもある
思い切って互換性切った方が絶対上手くいってた

>>973
まあ先発の古い言語だからある程度は仕方ないね
Null安全は対応してきてる
イミュータブルは昔から使えてた(final)
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.028s