TypeScript part4
パラメタ名・変数名で型がわかるようにしとけば大概は済む
引数の個数をテキトウに呼ぶ奴がいたら、それはそんな作り方する方がおかしい そういう開発者にのしかかる煩わしさを軽減するのが型の役目だろうに コーディングルールの運用で型限定するのも
コンパイラにまかせて型限定するのも
少なくとも js に限って言えば前者の方が手間は少ない >パラメタ名・変数名で型がわかるようにしとけば大概は済む
よく事故るのは受け渡すオブジェクトのメンバーの有無だったりするけどそれには無力だな。 大概、おおむねって話よ
よほど便利だろうから、こういう言語が生れたのだろうし全否定するわけではない
あと、処理系が変数の型を把握できても、しかるべき名前でないと、開発者に分かりにくい場合がある
自作でもこれなんだっけ?紛らわしいなって、結局名前弄ったり、名前って大事 型付けはあった方が良いけど、肝心の成果物がしょーもないことは多々あるな
最近まで参画していたアプリはすげー健康なブスだった 開発途中で型の変更が必要になったとき安全に漏れなく修正できるメリットとかは無視できないんだけど
今までそういう経験がなかったんだろうか そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
それよりも代入により生じる依存関係を静的に追跡可能であることが重要で、その点では型があることで飛躍的に静的解析の精度が上がる
ただ、そのためには静的解析しやすい作りになっていることが大前提だ
動的型畑の人って概してオブジェクトと連想配列の区別が曖昧で、静的型に馴染んだ人からすると信じられないような型安全もクソもないコード書くからな
それを根本的に改めないなら型なんて大して役に立たん >そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
その影響しそうな箇所の把握に型があるのとないのでは大きく正確性や効率に差が出てくるでしょって話 まぁRubyやPHP出身の低能にそもそも型書かせるのが難しいという意見には同意
根本的に教養・学が足りないから、どうしようもない
もはや言語仕様で救えないレベルの話である 動的型畑の奴が一概にバカとは思わないが、オブジェクトの全プロパティ舐めて値を書き換えたりするコードが突如出現したりして面食らう
根本的に思考回路が我々とは違うのだなと感じる JavaScriptは信用できない、JavaScriptは危険。
だからJavaScriptを撲滅しようとした時代があったんだよな。
JavaScriptそのものは書くものではなくて、使うものに変化した。 JSを半端に知ってるやつこそそう言うけど、地雷がたくさん埋まってる以外は悪い言語じゃない。TypeScriptも今となっては薄いラッパーに過ぎないし 何作るかによるな
んで、Typescriptでしょーもないもの作ってる奴はかなり多い 動的型付けでしょーもないもの作ってる奴の方が圧倒的に多い事実 ( )y-~~ ( >)y-~~( >-)y-~~( >-< )y-~~ ウマスギル・・ undefinedっていらなくない?
全部nullと同等にしてほしいわ >>267
助かった
記号はググりずらくて困ってたわ TypeScript が作られた由来に関連しての事ですが
JavaScript と CSSは
直感的ではなく地雷陥穽満載の言語だと思い
苦痛を感じているのですが
Web開発が根本的にもっと簡単に楽になる事は
近い将来ありえますでしょうか。
ブラウザ自体とDOM操作が
JavaScriptでしか実行できない事は
永遠に続くのでしょうか。 strictNullChecksを有効にするとこのコードがエラーになる
const foo: { bar: string } | null = { bar: 'bar' };
if (false) if (foo !== null) console.log(foo.bar); // error TS18047: 'foo' is possibly 'null'.
falseを!trueに変えるとエラーにならない
if (!true) if (foo !== null) console.log(foo.bar);
どういうこっちゃ >>0277 以前から未解決の課題です
ttps://github.com/microsoft/TypeScript/issues/26914 >>278
ほんとだ・・・到達できないコードでは文脈を無視してタイプチェックするのか・・・
const foo: string | null = 'foo';
// return;
// throw new Error();
console.log(foo.charAt(0)); // error TS18047: 'foo' is possibly 'null'.
returnかthrowのコメントを外すとエラーになる
if (foo !== null)を追加してもエラーは回避できない 興味深い挙動だね
https://i.imgur.com/ZxUFyxD.png
そもそも到達不能コードがあること自体が問題なわけでこれがエラーになっても実害はないだろうけど
returnやthrowを仮置きしたいときにエラーを出したくないなら
if (!!true) return;
if (!!true) throw new Error();
とかするのがいいのかねぇ 最近はフレームワークが全部準備してくれるから書き心地の良さだけを享受できてたけど
久々に自分でゼロから環境作ろうとすると設定の混沌っぷりに絶望するな
たぶんハローワールドするまでの作業が一番苦しいのはTypeScriptだと思う javascript に変換してくれる
javascript をベースとしない言語を作ってくれればいいのに
何で Typescript はjavascript のだめな部分を採用するかなあ VSCode, node.js, webpack, babel で、TypeScript も出来る
Ruby on Rails 7 から、CDN から直接インポートするように変わった。
脱webpack/node.js で、esbuild へ変わった Nodeのサポート3年って期間自体は普通なんだが、JSのまま使うことって無くなってるから実質TS関連が安定するまでは捨て期間なんだよな
安定版で作り始めてリリースする頃にはもう期限切れ間近ってことが多くて体感のサポート期間がめっちゃ短く感じる >>286
基本的にNodeのバージョンとTSのバージョンは独立だろう
何の話をしてるのかわからん TSがネイティブで動くブラウザを
MSは試験的に開発提供したら良いと思う。
TS-Edgeとかの名前で。
CDNから<script src="hoge.ts">を
読み込むだけで動く仕様。 あんまり意味ない気がするな。
開発時のTAT改善なら今プロポーザル出してるType Annoatationsでも十分だろうし。 型引数Tがnullを取るかどうかを判定する関数
function isNullable<T>(): boolean
みたいなのを作ろうとあれこれ調べてたけど
よく考えたら実行時に型情報持たないから無理な話よね
別のアプローチを考えねば