TypeScript 構文を JavaScript で許容するとかありえないんだけど

こう思う人もそりゃいるわなと思った。でも個人的にはType Syntaxに賛成の立場っす。

以下引用して一方的に反論する。読み飛ばしているところもあるんだけど、そもそもの前提が違うっていうか「破壊的変更をする」「言語に機能を追加する」みたいなことが書かれていて、それってもう違うじゃん。だから飛ばしている。

◆ 1 altJS でしかない言語を標準に入れるなんてありえない
◆ JavaScript ユーザのメリットはないし混乱の元

個人的にはありえないですね
TypeScript は altJS のひとつでしかないです
なぜそんなものの構文を JavaScript 側で受け入れて動作するようにする必要があるのでしょうか

言いたいことはわかるんだけど、TypeScriptはどうでもいいし関係ないんだ。JavaScriptの話でしかなく、Typeのアノテーションがあったらいいねという話。それに反対する?

JavaScriptに型注釈が組み込まれること(なお、現代におけるJavaScriptの実行環境と思想的にバッティングするため実行時は無視される)に反対するのであれば、その表明は正当なものであると思える。

以前 CoffeeScript というのが流行って Github だったかどこかの有名どころのデフォルトのフロントエンド言語として使われていたこともありますが 今では廃れました
TypeScript も今流行ってると言うだけで将来的にずっと使われるとは限りません

CoffeeScriptとTypeScriptじゃモノが違う。TypeScriptってJavaScriptのスーパーセットでありつづけることを規約として開発してたんじゃん。ヘルスバーグ兄貴が言ってたじゃん。

思い上がりをして失敗をして、CoffeeScriptよろしく危ない方向に向かっているのはFlowを使ってるReactチームだったよな。

Flowタイプチェッカーはただの型付きのJavaScriptではなく、今やFacebookのニーズを満たす中核を担う (infoq.com)

そっち行くと危ないだろって。TypeScriptは正しく縛っているから危ない方向には行きようがない。「俺の考えた最強の構文」をやりたいんじゃなくて、JavaScriptに敬意をもってやってる。JavaScriptを超えるとかいう思い上がりをしない。

そして、もう一度言うけどTypeScriptがどうであるとか関係なく、事象としてはJavaScriptに新しいコメント形式が増えるかどうかってだけ。

型をつけるという需要はずっとあり続けるといったところで 型の付け方は TypeScript の方法しかないわけでもないです
TypeScript に変わる物が出てくるかもしれませんし TypeScript 自体がメジャーアップデートで大幅な構文変更をする可能性だってあります
そのたびに JavaScript 側の構文にも影響し ブラウザが対応することになります
そんなサードパーティツールの都合で標準である JavaScript が影響受けるというのはおかしな話です

んであれば、よりよい型付け(正確には型注釈)の方法を考えて提案したればいい。そのためのproposal期間ですし。そこで別の方式の型注釈が出てくればTypeScriptがそっちに寄るだろう。TypeScriptはJavaScriptのスーパーセットだから。

「TypeScriptがメジャーアップデートで」ってのは、そうならないためにTypeScriptを立ち上げて今まで大勢のエンジニアに使わせて実地検証させてきたんじゃないか。根本的に問題なさそうだって九分九厘の人が思っている現状だ。例えば何かの途方もない奇跡が起こってTypeScriptの構文がガラッと変わったんだとしても、JavaScriptに影響が及ぶわけがない。そもそもそういう話をしてるんじゃないし、TypeScriptにとってJavaScriptは不可侵の神域なのだから。トランスパイルが必要ではあれどJavaScriptの存在を前提としているというのが他のaltJSとは違う。

TypeScriptの本懐っていうか野望は、JavaScriptへの型注釈導入だ。JavaScript世界に静的コード解析のメリットを喧伝し、実地検証をしたかったからTypeScriptが生まれた。

つまり、TypeScriptはJavaScriptのためにワークしたんです。CoffeeScriptはCoffeeScriptのためにワークしてたし、ReactもVueもそれぞれのプロジェクトのためにしかワークしていない。かたやTypeScriptはJavaScriptの敬虔な信者。

そもそも TypeScript が流行ってると言っても JavaScript 全体からすればごく一部です

何を根拠にそんなことを。っていうかどういう範囲に対してどのような意味合いで言っているのだ。JavaScript全体って。githubのスターランキングとか見ておるのか。

そして、三回目になるけどTypeScriptがどうであるとか関係なく、事象としてはJavaScriptに新しいコメント形式が増えるかどうかってだけ。

ウェブは本来ウェブに関係ない人たちでも 情報を公開するためにウェブページを使っているので その他言語に比べて環境は特殊です
ES2015 以降の JavaScript ですら全体からすれば一部の人しか使ってないです
Chrome の統計データでどういう機能がどれくらい使われてるのか見れるページで見てみると よく使われてそうな機能でも使用率が低かったりします

ECMAScriptをコールドにしてこれ以上機能を増やさないでくれという主張なのだろうか。だとしたらわかる。

バベってるしPolyfillするだろうし統計の取りようもないじゃんね。新規プロジェクトであっても「開発時に記述されているがバベられて置き換えられている」ことも多いだろうさ。ちょっと前はBabel以外の選択肢とかなかったわけだし。

過去からあるWebページが全面刷新されてることも珍しいってのはインターネットを使っていればわかるだろうし、参考情報ではあれど判断材料にはならんのではないか。

ネットで積極的に発信するような声の大きな人たちが使ってるだけで JavaScript ユーザからすると TypeScript TypeScript 言ってる人は一部でしかないです
そんなごく一部の人しか得せず 多くの人たちにとって何の恩恵もない機能をなぜ入れる必要があるんでしょうか

これは俺の個人的な思いだけど、素のJavaScriptを書くのって大分と苦行だわ。なぜなら俺はバカだから。TypeScriptはバカがミスするのを未然のうちに防いでくれる。非才はコーディング能力が抜群に低いクズでありますから、TypeScriptに守られっぱなしです。一般レベルの頭脳を持っているのであれば素のJavaScriptで開発することも苦じゃないんだろうけど、そんな人ばかりではない。俺のような頭弱いのも頑張って生きている。

出始めのTypeScriptには親をよく殺されたもんだけど、彼らは俺の親を殺して食いながらだいぶ頑張ってTypeScriptを進化させてきた。そしていまや、TypeScriptがないとコードが書けん。

それを「TypeScript TypeScript 言ってる人は一部でしかないです」って、なに?サバンナState of JSでも同じこと言えんの?

ただまぁ、普及度で測るべきではないよな。「このハンバーガーとコーラは世界で一番売れている。だから世界で一番美味いものに決まってるだろ。」とかそういう話になってくる。

Promise や async 関数といった機能は機能として使えるので使わない人的にも価値はあると言えます
それに比べこの TypeScript 構文は無視されるだけなので何の価値もありません

この書きっぷりを読んで、俺はこの記事をしたためようと決めた。フェアじゃないと思った。私怨が見えた。

「機能は機能として使えるので使わない人的にも価値はあると言えます」って、どういうこと。価値ないじゃん。そして「TypeScript 構文は無視されるだけなので何の価値もありません」って。価値がないはずないって、わかるでしょ?

どうしちゃったの?

JavaScriptしか書いたことないんならわかるわ。静的コード解析という甘露の味を知らなくても不思議じゃない。でもそうじゃないだろうし。

最低限ブラウザで PHP や Python での型指定のように実行時の型チェック処理が動いてこそ検討する価値が出てくるものです

実行時のチェックなんて役に立たないものは要らないし、逆にあると非常に困る。憤死する。それこそ無駄すぎる負荷だ。実行時チェックをされるんなら俺はType導入に断固反対する。

静的チェックだけできればいいんすよ。ランタイムエラーを見ると肛門が緩んでクソが漏れちゃうから誰しもTypeScriptを書いておるんです。エディタから恩恵を受けたいというのが原初の動機であったはず。

現時点で TypeScript の構文をサポートしてもメリットがないだけではなくデメリットだけがあります

だから、メリットがないとか、思ってるはずがないじゃん。思ってたんだとしたらそれは凄いことだよ。

現状の JavaScript のコメントはネストもできない単純なものですが TypeScript の型をコメントと認識するには TypeScript の構文を理解してパースしないといけないです
それだけでパフォーマンスが落ちます
わずかとはいえ メリットもないことのためにただパフォーマンスが落ちるのは許容されません

なんかさっきから想像で言ってないか。書かなかったらパーサー内の条件分岐に引っかからんし、「わずか」と言えるほどのパフォーマンス劣化も発生しえないだろ。書いたとしてもASTに乗せないのだぞ。いや乗るのか?どうなんだろ。エディタが読むときは乗るだろうけど。

コード中に含まれる他のコメントと同じくらいのパフォーマンス劣化じゃないだろか。どこまで対応するのかにもよるけど、なんにせよパーサーからして曖昧な書き方にはしないだろうし。V8やらSpiderMonkeyやら書いてる鬼をなめるなよと。

そのパフォーマンス劣化を許容できないんなら、そもそもコメントのパフォーマンス劣化を許容するべきでない。意味をなさないものは意味がないんでしょ?よくわからんけど。意味があるけど。

加えて意味がないけど意味がありそうな型情報が書かれているなんて混乱の元でしかありません
自分のコードしか見ない人ならともかく他人のコードも読むのであれば TypeScript まじりのコードも出てきて混乱の元です

四度目だけど、TypeScriptは関係ない。

以下、「TypeScriptは関係なく、JavaScriptにコメント形式が増えるというはなしです。」で反論できる部分について省略する。

それにこれが通るようなら そのサードパーティでよく使われる構文も入れることになってくるでしょう
例えば React で使われる JSX などです

JSX導入は機能を増やしちゃってんじゃんというのと、JSXってガチクソノータリンチンパン難読ゴミ構文じゃん。マークアップ言語をまるごとJavaScriptにぶち込んで汚染するって解決手段は思いついても実装せんわい。アホすぎる。根本的に異なる言葉を境界なく混ぜ込むっていう窓割りムーブのことを拡張とかほざいてんのも怖い。

JSXの優位性として語られていることはJSXの文法上のメリットに非ず。「React.createElement」を書けばいいだけなんすよ。長いんなら「const e = React.createElement」書けよ。あるいはobjectとして書けよって。つまりJSでいい。テンプレート構文を否定しながらMLに縋り付いているのは、違う。マークダウンを書いちゃった時点で思想的に敗北していた。

Webとは異なる世界の話をしてるのがJSXじゃん。一貫性(大嘘)のために疎結合をいちいち重密結合にしたバカの創造せし混沌なる負債そのものじゃん。なんの義理があって堅牢とは程遠い貧弱な文法をJavaScriptに導入せねばならんのよ。JSXを例として持ち出すのは筋が悪いわ。

また外部に積極的に発信するような人がみんな TypeScript を好んでいるというわけでもないです
OSS のライブラリ作者などでも TypeScript 反対の人は少なからずいて issue で TypeScript 信者から TypeScript で書き直してと要望が出されてお断りしてるケースもあります
中には NO と言われているのにしつこく TypeScript を使うべきだと主張しているのを目にすることもあり TypeScript ユーザの傲慢さには嫌気が差します

主語がメリメリと音を立てて大きくなる。

TypeScriptに親を殺されたんやろなぁ。俺も数多の親を色々な技術に殺されているので気持ちはわかる。でも事実JavaScriptからTypeScriptに書き換えたプロジェクトも少なからず(曖昧で説得力のない無理やりなレトリック)あるわけですし。統計情報をくれ。

TypeScript は TypeScript で JavaScript とは違う別物として JavaScript を汚染するようなことはやめてほしいですね
歴史的な理由での JavaScript の良くない仕様まで引き継いでスーパーセットなんて名乗らず 別の方向に進んでいってもらいたいです

だからまぁ、TypeScriptを理解してなくて、でもTypeScriptって言葉を見て嫌な気持ちしたから批判したかったんだろう。

しゃあない。

◆結

しゃあない。親を殺されたなら怒りで目の前が真っ赤になるのはしゃあない。俺もなることある。他山の石じゃないけど、技術の雑語りはしたくないなと思った。過去やってしまっていたかもしれない。

批判には愛と理解と付き合いがなければ。たとい親を何人殺されようと、彼らの思想に寄り添わずして技術を酷評することはできない。俺がJSXとGoとPythonに死ねと言うのは、思想に付き合い耐え忍んだ結果として、くっさいくっさい生ゴミだったからです。HaskellやLispと付き合えるのは、辛抱して裸で抱き合った結果として思想が美しかったから。初めて見たときキツかったしプロジェクトには採用できないけど、理解できて、正しかったから。他の言語で記述に迷ったとき、脳の奥から最適解を出してくれたから。

ただ、Haskellという重機でアプリケーション書くよりもGoみたいな玩具で書いたほうがマシ。そういうもの。

なんのはなしだっけ。まぁいいや。じゃあな。