[過去ログ] TypeScript part3 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
1
(1): デフォルトの名無しさん [] 2018/04/26(木) 21:48:23 ID:mMDBzDaB(1) AAS
外部リンク:www.typescriptlang.org

JavaScript that scales.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.

part1
2chスレ:tech
part2
2chスレ:tech
978
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 20:51:38 ID:iK2C+Pgo(1) AAS
>>977
977(1): デフォルトの名無しさん [sage] 2021/12/30(木) 20:42:46 ID:18t9WvJQ(4/6) AAS
>>974
型さえあってりゃどんなライブラリも安全安心だと思っているのか……
ちゃんと読めてます?
「信用できない領域がグッと減る」って書いてあるでしょ?

型安全であれば全てが安全なんてことはない
これは常識
でも型安全ならそうでない場合に比べて大部分が安全になる
これも常識

そしてTSは一見すると型安全であるかのように見えるけれど
型が簡単に嘘をつける言語仕様のせいで実は型安全ではなく安全でない言語である
これが私の主張
よく読んでね
979: デフォルトの名無しさん [sage] 2021/12/30(木) 21:06:33 ID:18t9WvJQ(5/6) AAS
>>978
お、これは失敬
980: デフォルトの名無しさん [sage] 2021/12/30(木) 21:26:07 ID:XEA11GKy(7/15) AAS
>>966
966(2): デフォルトの名無しさん [sage] 2021/12/30(木) 19:17:21 ID:zuTar3e4(1/7) AAS
>>963
型が嘘をつけることとバリデーションは別次元の話

>>964
明示的キャストなんかしなくてもTSにはいくらでも型が嘘をつく罠がある
代表的なところだとjsonのパース、DBのI/O、api I/O、野良ライブラリのI/O、、、
あんたの言う「型が嘘をつく」の意味がよくわからんが。オレオレ用語じゃなくて一般的な用語で説明してくれんかな。

>先も述べたようにJsonのパース、ApiのIO、DBのIO、野良ライブラリのIO
>疑わしい箇所が多すぎる

嘘をつくもなにも、JSONはそのJSON自体の構造以上の型を主張したりはしないが。
それを勝手に別の型と見做したとしたらそのコードの方に問題があるわけだろう。
981
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 21:31:50 ID:XEA11GKy(8/15) AAS
>>967
967(2): デフォルトの名無しさん [sage] 2021/12/30(木) 19:25:44 ID:zuTar3e4(2/7) AAS
言語仕様を変えるべきなんだろうな
typeで宣言した変数への代入は実行時に型チェック付きのマッピングにトランスレートすべき
ついでに言うとtypeで未定義の属性はマッピングするときにundefinedにすべき
これだけでTypeScriptによくある馬鹿馬鹿しいバグがかなり減るはずだ

type Foo {
x: string;
y: number; }

const foo: Foo = { y: “s” } as any
これはコンパイル時には無視していいが実行時にはエラーになるべきだし

const foo2: Foo = { x: “a”, y: 100, z: “111” }
これはzは消えるべき
ああなるほど。
型の合わせ方がわからなくてasやanyで誤魔化したらバグったってのの逆恨みか。
982
(2): デフォルトの名無しさん [sage] 2021/12/30(木) 21:32:15 ID:yBt1j67p(1/4) AAS
型が嘘をつくってのは
コンパイル時に指定した型以外の値が入ってることがある
入れることが簡単にできるということ

type X = { foo: string }
function xxx(): X

例えば↑こういう定義があったとする
実際にxxx()の戻り値が文字列型のfooという属性を持っているかどうか?
それはソースコードを隅々まで読んで間違いないことを確認するまでわからない

コードはXという型はfooという文字列型の属性を持っていると主張しているわけだが実際にはそうでない場合がある
これを俺は型が嘘をついていると表現する
983: デフォルトの名無しさん [sage] 2021/12/30(木) 21:33:00 ID:yBt1j67p(2/4) AAS
>>981
ちげーよ
984: デフォルトの名無しさん [sage] 2021/12/30(木) 21:36:23 ID:yBt1j67p(3/4) AAS
JavaやC#ではこういう事は起こらない
正確には低レベルAPIでメモリを不正に書き換えれば起こせるが無理すれば起こせないこともないと言った程度
JavaやC#ではXがfooという文字列型の属性を持っていてxxxの戻り値の型がXであると書いてあったらそれを信用していい
JavaやC#は型が嘘をつかないからだ
985
(2): デフォルトの名無しさん [sage] 2021/12/30(木) 21:37:07 ID:XEA11GKy(9/15) AAS
>>982

おめーのtscはそれコンパイルエラーにしてくれないの?
986: デフォルトの名無しさん [sage] 2021/12/30(木) 21:39:39 ID:rc2c+xCv(1/2) AAS
>>985
本当に恥ずかしいからお前はもう黙ってろ
987
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 21:39:49 ID:yBt1j67p(4/4) AAS
>>985
しない
988
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 21:42:03 ID:18t9WvJQ(6/6) AAS
そんなにTSが嫌いならずっとJavaなりC♯なり使ってれば良いじゃん
989
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 21:45:32 ID:XEA11GKy(10/15) AAS
>>987
コンパイルエラーにならない function xxx() の例よろ。
990: デフォルトの名無しさん [sage] 2021/12/30(木) 21:57:10 ID:hxNkeOah(1/4) AAS
>>988
そだね
選択権があるプロジェクトなら必ずそうしてるよ
991
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 21:59:52 ID:hxNkeOah(2/4) AAS
>>989
function xxx(): X {
return {
foo: bugLib.getStringValueEvil();
}
}
992
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 22:09:49 ID:XEA11GKy(11/15) AAS
>>991

bugLib.getStringValueEvil() がstringと宣言されていればコンパイルが通るけどそっちが嘘だったって話?
993: デフォルトの名無しさん [sage] 2021/12/30(木) 22:21:35 ID:hxNkeOah(3/4) AAS
>>992
そう
994
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 22:24:35 ID:XEA11GKy(12/15) AAS
じゃあ bugLib.getStringValueEvil() はどうやって嘘をついたわけ?堂々巡りだが。
995
(1): デフォルトの名無しさん [sage] 2021/12/30(木) 22:28:29 ID:hxNkeOah(4/4) AAS
>>994
さあどうだろうな?
だから>>982でソースコード隅々まで見たら…って書いたんだけどね

JavaやC#だったら型だけ見ればああこの戻り値のfoo属性は文字列なんだなと信頼できる
ソースコードを隅々まで見る必要はない
なぜなら型が嘘をつかないからね
996: デフォルトの名無しさん [sage] 2021/12/30(木) 22:34:32 ID:rc2c+xCv(2/2) AAS
anyなんかから型変換する際にランタイムチェックを追加するオプションはあっていいとは思うがTypeScriptにとってのno goalだから無いのも仕方ない
型安全性だけに拘るならTypeScriptは適当じゃないのはそれはそう(そもそもがoptional typeでしかない)

他の要素も考慮すれば個人的には悪い選択肢じゃないのでJavaScriptよりはTypeScriptを選ぶけども(C#やJavaと比較するかは目的による)
997: デフォルトの名無しさん [sage] 2021/12/30(木) 22:38:38 ID:XEA11GKy(13/15) AAS
ようはTypeScriptに限らず強い型付け以外全否定ってことかね
998: デフォルトの名無しさん [sage] 2021/12/30(木) 22:56:16 ID:XEA11GKy(14/15) AAS
次スレ立てるよ
外部リンク:www.typescriptlang.org

JavaScript that scales.
TypeScript is a typed superset of JavaScript that compiles to plain JavaScript.
Any browser. Any host. Any OS. Open Source.

part1
2chスレ:tech
part2
2chスレ:tech
part3
2chスレ:tech
999: デフォルトの名無しさん [sage] 2021/12/30(木) 22:57:42 ID:XEA11GKy(15/15) AAS
TypeScript part4
2chスレ:tech
1000: デフォルトの名無しさん [sage] 2021/12/30(木) 23:01:37 ID:chdQ4etC(1) AAS
>>995
それって型指定のバグなわけで、バグを回避する為に他の言語でもソースコード全部読む必要あるのは変わらないのでは……
1001
(1): 1001 [] ID:Thread(1/2) AAS
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 1344日 1時間 13分 15秒
1002
(1): 1002 [] ID:Thread(2/2) AAS
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。

───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
外部リンク:premium.5ch.net

▼ 浪人ログインはこちら ▼
外部リンク[php]:login.5ch.net
1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.237s*