TypeScript part3
■ このスレッドは過去ログ倉庫に格納されています
http://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
https://peace.5ch.net/test/read.cgi/tech/1349187527/
part2
https://mevius.5ch.net/test/read.cgi/tech/1430386649/ 早く世の全てのJSプロジェクトがTSになりますように >>51
めちゃくちゃ重くてスマホではまず動かないレベルってんじゃなかったっけ? importは他ファイルのクラスを持って来れるようにするのよね
@xxxxxのデコレータの役割がわからないのだけど誰か教えてくれんかね・・・
「付加情報をclassやmethod等に付与するための仕組み」ってなんぞ
Javaでいうアノテーションらしからそれも調べたけどわからない・・・^p^ TypeScriptでジェネリクスを使ったとき、C++でいうテンプレートの特殊化のようなことって
できないもんですかね?
function func<T>(x) でTがnumberとstringの場合とで別の処理ができたらいいんだけど。 型情報で実際に呼ぶ関数のオーバーロードの振り分けはできたりはしない
共用型 string | number を使えば string と number 以外の型は入らなくなる
実装部分は typeof arg === 'string' とかで分岐。返り値の型は推論される
推論が思ったようにいかなそうなら mapped type 使うなりオーバーロードの宣言を書いたりしても良い ありがとう。やっぱりダメか。
> typeof arg === 'string'
Tがstringだったら'string'と比較するってのをやりたかった。 Typescriptのコンパイラのソースコードを見たが、
swicth文による条件分岐が乱用されていて美しいソースコードではなかった。
もっと良い設計があるはず。 構文木のような構造には多態はうまくマッチしないんだよ 構文解析とか条件分岐(状態遷移)の塊だろ
状態遷移とかswitch文そのものだ >>88
そう思うならお前が改善してプルリク送ってもいいのよ >>91
なぜ高貴なハイクラスエンジニアの俺様がただ働きせにゃならんのだ?
バカなのか? Typescriptのコンパイラのアルゴリズムは何ですか?
ソースコードを見たところ再帰下降解析らしいけど、それだと左再帰で問題が出るよね。 ハイクラスの俺様が就職したら低レベルの土方を蹴散らしす 5chになってから急に自分の書き込みに誤植増えた
絶対何かある 就職してないのかよw
ハイクラスなら就職なんてしなくても学生の内から引く手あまただろ
または起業しろよ 今の職場でts+Vue.jsで作ってる案件があるんだけど、コードの肥大化と共に
型チェック付きのビルドに10分以上かかるようになっちゃって型チェックなしのヒルドに変更してしまってるんだけど
そういう事例って他のところにもある? 世界でも有数の大規模ソフトウェアであるVSCodeがTypeScriptでビルドされている以上、
利用者のスキルの問題でしかないな まぁ、今どきVueを選んじゃう技術力・審美眼のないとこじゃしょうがないんじゃないか?
糞うるさいポンコツウインドウズXPとか使ってそう React使いがよく言うよな。技術力&審美眼。
魔窟になってるのを技術力と言い換えて、そのアーキテクチャを美と言い換えるやつ。 うちのプロジェクトもビルド時間5分なんでどうにかしたいなぁ。
makedepend+makeが欲しい。 >>98
それ可笑しくね?vscodeビルドしたことあるの? >>99
mbp2017つかってる。メモリは8gbだけど >>103
チャイニーズに尻尾振るガラパゴスVue民にはお似合いのゴミだなw module と namespaceの使い分けは
どうやればいいの? 使い分けるものではない
moduleはnamespaceに置き換えられた
常にnamespaceを使用せよ type と interface の使い分けは
どうやればいいの? >>108
ほぼ一緒だから気にしなくていい。
Typescriptの仕様書にも「非常に似ている」と書いてある。
ただ、interfaceは
inteface Point {
x:number:
}
interface Point {
y:number:
}
というようにプロパティの追加ができるが、typeはできない。それぐらいしか違いがない。 TSLintのデフォがtypeよりinterfaceを推してくるからとりあえずinterfaceにする事が多い >>110
これメンスだがtypeしか使えない機能なかったっけ? 交差型、共用体型を定義できるのはtypeだけだな。 例えば file1.tsを編集していて、バックアップとしてそのファイルを複製して
file1 - コピー.ts
を作ったとすると、関数名が重複していますみたいなエラーがダダダーと
出るんですが、どのように対策すれば良いでしょうか? 自分はいつもバックアップはfile1.ts.bakって付けてる。 >>115
サーバーが必要なんでしょ?
そんなの持っていないし gitにサーバが必要とか正気か
いいからとりあえずチュートリアルやってみろ >>119
man git
で英語を読む
でも、君にはそんな技術も学も根性もなさそうだから、
やっぱりfile1 - コピー.ts.bak181110ってするのがいいと思うんだ。
いや君をバカにしてるわけではなくて。
猿は猿らしい生活をした方が幸せだと思うからさ。ね。 >>119
これ以上は他所でやってくれ
お前さんの質問に対する回答は
* 編集バックアップをファイルコピーでとるというのがクソ
* 拡張子も変えてないならビルド対象になって当然
でおしまい 流石に不親切すぎる。猿でもわかるgitとか読むと良い TypeScript使うな。汚らわしい。
バカはバカらしくPHPでも使ってろゴミ。 elem.onclick = function () {
if (this.classList.contains('classA')) {
・・・
}
こんなコードを書くと、Visual StudioのTypeScriptで
エラー TS2339 (TS) プロパティ 'classList' は型 'GlobalEventHandlers' に存在しません。
と出るのですが、生成されるJavaScriptコード(上のコードを同じ)は問題無く実行出来る。
これは何故ですか? あのさぁ…何のためにTypescript使ってんのよ… thisを使わないか、addEventListener使う this: GlobalEventHandlers のところは this: thisじゃだめなのかな? >>126
elemにちゃんと型(多分HTMLElement?)が指定されてればそんなエラー出ないぞ >>129
addEventListenerでも同じだろ addEventListenerは要素ごとにシコシコ定義されていて、thisがその要素になっているのでOK
onclickとかはGlobalEventHandlersでmixin的に定義されていて、this: GlobalEventHandlersになっちゃってるのでNG >>135
なるほど。でも、そもそも
this.classList ではなくて
elem.classList と書けばいいんじゃないか ようやくEitherでホイサーできるTSがきたか
しかしleftrightとパタマチがないとダメやろこれ よんだら、これEitherじゃなくホイサーだろ・・・
エラー処理強制できないEitherってナンジャー?
ゴミジャー 通常、string と string | null は同等なんでVSCodeのポップアップでも | null は省略されるけど、
これを省略させないで表示する設定ってないのかな。
strictNullChecks 使ったら区別できなくて困った。 通常、string と string | null は同等じゃないです 他に困ってる人がいないってことは strictNullChecks 自体あまり使われてないのかな。 strictNullChecksは使ってるけどその困り方がよく分からないから具体的にどういうコードを書こうとした時に何が困るのか教えてくれるとありがたい function f(): string | null {
if(Math.random() === 0) {
return null;
}
return 'abc';
}
function g(): string {
return 'abc';
}
const x = f();
const y = g();
VSCode で x や f() にマウスポインタを当ててポップアップで型を表示しても
string | null じゃなくて string としか表示されないんでこれを区別できるようにしたい。 * プロジェクトルートにtsconfig.jsonはあるか
* tsconfig.jsonでstrictNullChecks或いはstrictが有効になっているか
* そもそもVSCodeでプロジェクトルートを開いているか なるほど、VSCode用のtsconfig.jsonを置いてやればいいってことか。ありがとう。
ビルド用のtsconfig.jsonは別の場所に置いてた。 そりゃプロジェクトルートに無けりゃどういう原理で探してくるんだって話だ じゃなくて、VSCodeがtsconfig.jsonのビルドオプションに合わせて表示を変えているとは想像してなかった。 そもそもtscもtslintもプロジェクトルートのtsconfig.jsonなりtslint.jsonなり読むんだから・・・・・ 各.tsに対してどのtslint.jsonが使われるかという認識はあったけど、
tslintもtsconfigを見てるのか。なるほど。 誤解を招く書き方だったから訂正しておくけどtslintはtsconfig.json読まんよ 今日は emitDeclarationOnly でd.tsだけ出力できることを発見した export as namespace が何をどうしてるのかさっぱりわからん JavaScriptを勉強したことがないので、今からならどうせならとTypeScriptの方を身につけたいんだけど・・・・
これって先ずJavaScriptが出来ないことには実用にならないの? typescript は javascript の上位互換なのだから、ts やってるうちに js のことも勉強しなければならなくなる (特に、es5, es2015 とかのキーワードで)
言い換えれば、ts を勉強してれば js が出来るようになる >>167
javascript9割以上+TypeScript追加仕様なんだからjsやらないなら使う意味ねえだろ 正確にはTypeScript使ってるとJavaScriptの深い部分が気になってきて、最終的には自然とJavaScriptを勉強し始めてるよ
気にせずTypeScriptから始めれば良い tsだけで理解できることをjsを経由する意味はないしむしろ型を考慮しないダーティーな解法を覚えさせられるだけ有害 tsの、ライブラリの95パー以上がjsなんだから
どうにもならん。
pythonの型アノテーションを
完全に付ける書き方に別言語名つけてるようなもんだ。 >>172
動的型は型を考慮しないと思ってんのはお前だけだ
JavaScriptの全ての変数に型は存在しているし目の前の変数の型を知らずにコーディングしてる奴なんていない
JavaScriptは実行時に型チェックして型の正しさを保証して、
TypeScriptは実行前に型チェックして型の正しさを保証するって違いだけだ 作ってる時に頭の中にある型なんか、作った後には何の意味もないし、実行時に型チェックするなんて馬鹿の極み >>175
頭の中w
JavaScriptには全ての変数に型があるんだよ
アンダースタン? >>177
保守する人には作ってる人の意図はわからないって意味だよ ■ このスレッドは過去ログ倉庫に格納されています