X



TypeScript part3
■ このスレッドは過去ログ倉庫に格納されています
008354垢版2018/10/04(木) 22:31:58.31ID:B6XYHrci
importは他ファイルのクラスを持って来れるようにするのよね
@xxxxxのデコレータの役割がわからないのだけど誰か教えてくれんかね・・・
「付加情報をclassやmethod等に付与するための仕組み」ってなんぞ
Javaでいうアノテーションらしからそれも調べたけどわからない・・・^p^
0085デフォルトの名無しさん垢版2018/10/18(木) 22:51:05.35ID:Rszm7VcT
TypeScriptでジェネリクスを使ったとき、C++でいうテンプレートの特殊化のようなことって
できないもんですかね?

function func<T>(x) でTがnumberとstringの場合とで別の処理ができたらいいんだけど。
0086デフォルトの名無しさん垢版2018/10/19(金) 02:55:24.30ID:iO0N1Qhu
型情報で実際に呼ぶ関数のオーバーロードの振り分けはできたりはしない
共用型 string | number を使えば string と number 以外の型は入らなくなる
実装部分は typeof arg === 'string' とかで分岐。返り値の型は推論される
推論が思ったようにいかなそうなら mapped type 使うなりオーバーロードの宣言を書いたりしても良い
0087デフォルトの名無しさん垢版2018/10/19(金) 07:51:09.81ID:1EDOmnkE
ありがとう。やっぱりダメか。

> typeof arg === 'string'

Tがstringだったら'string'と比較するってのをやりたかった。
0088デフォルトの名無しさん垢版2018/10/20(土) 14:25:59.55ID:QA1RjyY/
Typescriptのコンパイラのソースコードを見たが、
swicth文による条件分岐が乱用されていて美しいソースコードではなかった。
もっと良い設計があるはず。
0093デフォルトの名無しさん垢版2018/10/23(火) 18:43:56.54ID:+WvUI4qM
Typescriptのコンパイラのアルゴリズムは何ですか?
ソースコードを見たところ再帰下降解析らしいけど、それだと左再帰で問題が出るよね。
0096デフォルトの名無しさん垢版2018/10/23(火) 19:42:09.06ID:EVpcwrUE
就職してないのかよw
ハイクラスなら就職なんてしなくても学生の内から引く手あまただろ
または起業しろよ
0097デフォルトの名無しさん垢版2018/11/07(水) 08:20:52.86ID:lnxFtwDW
今の職場でts+Vue.jsで作ってる案件があるんだけど、コードの肥大化と共に
型チェック付きのビルドに10分以上かかるようになっちゃって型チェックなしのヒルドに変更してしまってるんだけど

そういう事例って他のところにもある?
0098デフォルトの名無しさん垢版2018/11/07(水) 08:56:34.35ID:+94YsfsL
世界でも有数の大規模ソフトウェアであるVSCodeがTypeScriptでビルドされている以上、
利用者のスキルの問題でしかないな
0099デフォルトの名無しさん垢版2018/11/07(水) 15:40:12.32ID:d0XTpm7T
まぁ、今どきVueを選んじゃう技術力・審美眼のないとこじゃしょうがないんじゃないか?
糞うるさいポンコツウインドウズXPとか使ってそう
0100デフォルトの名無しさん垢版2018/11/07(水) 16:13:39.60ID:mdwOvRGk
React使いがよく言うよな。技術力&審美眼。
魔窟になってるのを技術力と言い換えて、そのアーキテクチャを美と言い換えるやつ。
0101デフォルトの名無しさん垢版2018/11/07(水) 19:54:03.59ID:ReL8stLA
うちのプロジェクトもビルド時間5分なんでどうにかしたいなぁ。
makedepend+makeが欲しい。
0105デフォルトの名無しさん垢版2018/11/09(金) 18:28:02.99ID:npJX8Ub3
module と namespaceの使い分けは
どうやればいいの?
0107デフォルトの名無しさん垢版2018/11/09(金) 19:06:31.99ID:npJX8Ub3
>>106
了解
0109デフォルトの名無しさん垢版2018/11/11(日) 11:38:30.86ID:Cm/nwVcs
>>108
ほぼ一緒だから気にしなくていい。
Typescriptの仕様書にも「非常に似ている」と書いてある。
ただ、interfaceは

inteface Point {
x:number:
}

interface Point {
y:number:
}

というようにプロパティの追加ができるが、typeはできない。それぐらいしか違いがない。
0113デフォルトの名無しさん垢版2018/11/11(日) 20:39:14.47ID:3jMJhmwM
例えば file1.tsを編集していて、バックアップとしてそのファイルを複製して
file1 - コピー.ts
を作ったとすると、関数名が重複していますみたいなエラーがダダダーと
出るんですが、どのように対策すれば良いでしょうか?
0114デフォルトの名無しさん垢版2018/11/11(日) 20:52:52.31ID:B3f/927d
自分はいつもバックアップはfile1.ts.bakって付けてる。
0120デフォルトの名無しさん垢版2018/11/11(日) 23:28:37.79ID:R0IiHkaX
>>119
man git
で英語を読む

でも、君にはそんな技術も学も根性もなさそうだから、
やっぱりfile1 - コピー.ts.bak181110ってするのがいいと思うんだ。

いや君をバカにしてるわけではなくて。
猿は猿らしい生活をした方が幸せだと思うからさ。ね。
0121デフォルトの名無しさん垢版2018/11/11(日) 23:59:28.42ID:cIalEm6/
>>119
これ以上は他所でやってくれ
お前さんの質問に対する回答は

* 編集バックアップをファイルコピーでとるというのがクソ
* 拡張子も変えてないならビルド対象になって当然

でおしまい
0124デフォルトの名無しさん垢版2018/11/18(日) 12:08:33.81ID:uaqKqGAI
猿でも判るように書いたら人間に判らなくなりました
0125デフォルトの名無しさん垢版2018/11/18(日) 13:48:19.18ID:pdwgi8hG
猿ですがわかりません
0126デフォルトの名無しさん垢版2018/11/26(月) 23:24:03.84ID:uFKIPm3P
elem.onclick = function () {
if (this.classList.contains('classA')) {
・・・
}

こんなコードを書くと、Visual StudioのTypeScriptで
エラー TS2339 (TS) プロパティ 'classList' は型 'GlobalEventHandlers' に存在しません。
と出るのですが、生成されるJavaScriptコード(上のコードを同じ)は問題無く実行出来る。
これは何故ですか?
0127デフォルトの名無しさん垢版2018/11/26(月) 23:28:58.28ID://9j39Lt
あのさぁ…何のためにTypescript使ってんのよ…
0128デフォルトの名無しさん垢版2018/11/26(月) 23:46:28.79ID:uFKIPm3P
>>127
仕事で仕方なく
0135デフォルトの名無しさん垢版2018/11/27(火) 10:22:11.47ID:AQW0OfN+
addEventListenerは要素ごとにシコシコ定義されていて、thisがその要素になっているのでOK
onclickとかはGlobalEventHandlersでmixin的に定義されていて、this: GlobalEventHandlersになっちゃってるのでNG
0136デフォルトの名無しさん垢版2018/11/27(火) 10:37:58.94ID:riCGJi9o
>>135
なるほど。でも、そもそも
this.classList ではなくて
elem.classList と書けばいいんじゃないか
0139デフォルトの名無しさん垢版2018/12/01(土) 10:07:51.30ID:7lSKHFDm
ようやくEitherでホイサーできるTSがきたか
しかしleftrightとパタマチがないとダメやろこれ
0140デフォルトの名無しさん垢版2018/12/01(土) 10:12:04.48ID:7lSKHFDm
よんだら、これEitherじゃなくホイサーだろ・・・
エラー処理強制できないEitherってナンジャー?
ゴミジャー
0141デフォルトの名無しさん垢版2018/12/01(土) 18:12:50.09ID:qYhERqMT
宇宙に満ちている光を伝える媒質、だっけ。
0143デフォルトの名無しさん垢版2018/12/01(土) 21:38:50.33ID:qYhERqMT
旧盆に行われる沖縄の盆踊り、かな。
0144デフォルトの名無しさん垢版2018/12/04(火) 20:53:43.14ID:iqna8FaP
通常、string と string | null は同等なんでVSCodeのポップアップでも | null は省略されるけど、
これを省略させないで表示する設定ってないのかな。
strictNullChecks 使ったら区別できなくて困った。
0148デフォルトの名無しさん垢版2018/12/05(水) 09:20:27.07ID:B/THyK2J
strictNullChecksは使ってるけどその困り方がよく分からないから具体的にどういうコードを書こうとした時に何が困るのか教えてくれるとありがたい
0149デフォルトの名無しさん垢版2018/12/05(水) 14:47:23.52ID:2sSegHBZ
馬鹿には無理
0150デフォルトの名無しさん垢版2018/12/05(水) 19:58:08.96ID:rsg3VEcH
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 としか表示されないんでこれを区別できるようにしたい。
0152デフォルトの名無しさん垢版2018/12/05(水) 20:43:39.84ID:kxOqR7S7
* プロジェクトルートにtsconfig.jsonはあるか
* tsconfig.jsonでstrictNullChecks或いはstrictが有効になっているか
* そもそもVSCodeでプロジェクトルートを開いているか
0153デフォルトの名無しさん垢版2018/12/05(水) 20:51:32.34ID:rsg3VEcH
なるほど、VSCode用のtsconfig.jsonを置いてやればいいってことか。ありがとう。
ビルド用のtsconfig.jsonは別の場所に置いてた。
0155デフォルトの名無しさん垢版2018/12/05(水) 21:04:20.27ID:rsg3VEcH
じゃなくて、VSCodeがtsconfig.jsonのビルドオプションに合わせて表示を変えているとは想像してなかった。
0156デフォルトの名無しさん垢版2018/12/05(水) 21:10:24.13ID:kxOqR7S7
そもそもtscもtslintもプロジェクトルートのtsconfig.jsonなりtslint.jsonなり読むんだから・・・・・
0157デフォルトの名無しさん垢版2018/12/05(水) 21:30:49.29ID:rsg3VEcH
各.tsに対してどのtslint.jsonが使われるかという認識はあったけど、
tslintもtsconfigを見てるのか。なるほど。
0167デフォルトの名無しさん垢版2019/02/14(木) 09:58:56.90ID:fCWwgaGu
JavaScriptを勉強したことがないので、今からならどうせならとTypeScriptの方を身につけたいんだけど・・・・
これって先ずJavaScriptが出来ないことには実用にならないの?
0169デフォルトの名無しさん垢版2019/02/14(木) 11:21:03.44ID:sZU59yH4
typescript は javascript の上位互換なのだから、ts やってるうちに js のことも勉強しなければならなくなる (特に、es5, es2015 とかのキーワードで)
言い換えれば、ts を勉強してれば js が出来るようになる
0170デフォルトの名無しさん垢版2019/02/14(木) 11:22:03.05ID:MlsuSDTj
>>167
javascript9割以上+TypeScript追加仕様なんだからjsやらないなら使う意味ねえだろ
0171デフォルトの名無しさん垢版2019/02/15(金) 00:32:30.89ID:UOWlr3Ch
正確にはTypeScript使ってるとJavaScriptの深い部分が気になってきて、最終的には自然とJavaScriptを勉強し始めてるよ
気にせずTypeScriptから始めれば良い
0172デフォルトの名無しさん垢版2019/02/15(金) 19:47:15.67ID:iHivKYcL
tsだけで理解できることをjsを経由する意味はないしむしろ型を考慮しないダーティーな解法を覚えさせられるだけ有害
0173デフォルトの名無しさん垢版2019/02/15(金) 22:59:18.80ID:XxBbyQo/
tsの、ライブラリの95パー以上がjsなんだから
どうにもならん。

pythonの型アノテーションを
完全に付ける書き方に別言語名つけてるようなもんだ。
0174デフォルトの名無しさん垢版2019/02/16(土) 16:31:11.68ID:HHyiFibH
>>172
動的型は型を考慮しないと思ってんのはお前だけだ
JavaScriptの全ての変数に型は存在しているし目の前の変数の型を知らずにコーディングしてる奴なんていない
JavaScriptは実行時に型チェックして型の正しさを保証して、
TypeScriptは実行前に型チェックして型の正しさを保証するって違いだけだ
0175デフォルトの名無しさん垢版2019/02/16(土) 16:54:05.42ID:sYjKK7tj
作ってる時に頭の中にある型なんか、作った後には何の意味もないし、実行時に型チェックするなんて馬鹿の極み
0178デフォルトの名無しさん垢版2019/02/16(土) 18:29:05.39ID:STqQL4YT
jsのboolの型チェックはバグあるけどな
■ このスレッドは過去ログ倉庫に格納されています

ニューススポーツなんでも実況