X



TypeScript part3
■ このスレッドは過去ログ倉庫に格納されています
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 使ったら区別できなくて困った。
0147デフォルトの名無しさん
垢版 |
2018/12/05(水) 08:02:21.96ID:rsg3VEcH
他に困ってる人がいないってことは 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は別の場所に置いてた。
0154デフォルトの名無しさん
垢版 |
2018/12/05(水) 20:57:46.26ID:kxOqR7S7
そりゃプロジェクトルートに無けりゃどういう原理で探してくるんだって話だ
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の型チェックはバグあるけどな
0180デフォルトの名無しさん
垢版 |
2019/02/16(土) 19:03:19.63ID:qw78JFeM
動的のつらみはrubyとかjavascriptで散々通ってきてtypescriptに行き着くわけだけど、
まだそこを通過中の人とは話が噛み合わないんだよなあ
結局こっちに来ることになるのに
0181デフォルトの名無しさん
垢版 |
2019/02/16(土) 19:28:50.73ID:HHyiFibH
TypeScriptにUnion型がある時点で最早動的型と言ってもいい
宣言したあとに離れた場所のコードを見ても、パッと見じゃどっちの型になってるかは分からないからね
0185デフォルトの名無しさん
垢版 |
2019/02/16(土) 21:15:59.20ID:dfsqwbBr
動的型の言語、結局人気が年々下落しはじめてる。
c#やtypescriptぐらいの、型あり基本で、
いざとなったら、部分的問わないのも、
自然で簡単に書ける、程度が今はよいな。
0186 ◆QZaw55cn4c
垢版 |
2019/02/16(土) 21:32:01.93ID:rUZ2ZZ3T
>>185
型を意識しない、というのは私には有用にみえます、ただし変数宣言は動的型言語にも必要だと思いますが、それを表立って採用している言語はありますかね…
0187デフォルトの名無しさん
垢版 |
2019/02/16(土) 21:54:57.88ID:aDxQaKE+
言語の人気が年々移り変わる、
ということは、
いつかtypescriptも、ほかの型付き、部分的型付き言語の人気も、移り変わる、
とは、考えないのか?
0188デフォルトの名無しさん
垢版 |
2019/02/16(土) 23:06:35.69ID:xN2b9tEZ
動的ウンコガイジどもに型の有用性説いても、豚に真珠だろ

ペチプァやらルビ豚やら、あいつら中卒のガチゲェジだからな
0189デフォルトの名無しさん
垢版 |
2019/02/17(日) 16:04:02.49ID:D60SxZ1Q
>>188
> 型の有用性
だから動的型言語にも型はあるし型の有用性を享受してんだけど…何度言っても分からない奴は分からないんだな
0190デフォルトの名無しさん
垢版 |
2019/02/17(日) 16:11:02.99ID:YF9uE98b
そんな誰でもわかってることで得意げになってるのが恥ずかしい
一合目で山に登ったつもりになってる感じ
みんなもっと上にいるから!
0192デフォルトの名無しさん
垢版 |
2019/02/18(月) 23:46:52.94ID:tCwq3WHG
昔は動的型付け言語と静的型付け言語って対義語みたいに思ってたけど、
TypeScriptやってみたら単純な二元論じゃないって気付かされた。
0193デフォルトの名無しさん
垢版 |
2019/02/19(火) 21:50:14.71ID:UOAs3sqY
そう対義語じゃない、分かりやすい表現だなぁ
本当に型が無いのはアセンブリ言語で、全てが整数になっててそれをどう解釈するかは本当に人間次第だからな
0194デフォルトの名無しさん
垢版 |
2019/02/20(水) 19:06:49.04ID:v7iPz90J
Cのunionもそういう意味では何でもあり
0196デフォルトの名無しさん
垢版 |
2019/02/21(木) 14:36:31.18ID:BCvd3Fow
同じファイルの書き込み処理なんかをRubyが5行で書けて、Javaが15行とかで書いて、いかにJavaが駄目かってブログ記事がはてなブックマークとかでよくバズってたな
声のでかい人はいつでもいる
0197デフォルトの名無しさん
垢版 |
2019/02/22(金) 14:01:01.67ID:w8nQWD0s
るbyなら一行で描かないと負け
0198デフォルトの名無しさん
垢版 |
2019/02/23(土) 02:18:28.49ID:+i56xIDn
Javascriptのthisというか変数スコープが厄介でHaxeやってるけど
Typescriptはその辺の問題点引き継いでる?
0199デフォルトの名無しさん
垢版 |
2019/02/23(土) 03:19:51.50ID:R2s6jSV3
「thisというか変数スコープ」?
分かってないことは分かった。
お前はどの言語やっても大成しない。
0200デフォルトの名無しさん
垢版 |
2019/02/23(土) 08:32:08.65ID:DQY5g4De
JavaScript(JS)/TypeScript(TS) のthis は、おかしい!
一方、jQuery, Haxe は、それを修正してる

また、JS/TS の== は危険だから、使っちゃいけない!
厳密等価演算子=== を使うべき!
一方、Haxe, Ruby は、== でOK

Haxe には、マクロ、引数つき列挙(enum)、代数的データ型、パターンマッチ、マルチプラットフォームがあるけど、TS には無い。

特に、switch 文での、enum が強力!
引数の型で分岐できるから、インタフェースと同等!

このサイトで、ブラウザでプログラミングして、実行できる
Try Haxe !
try.haxe.org/

Haxeプログラミング入門、尾野政樹、2015

Haxe は、Elixir に似てね?
プログラミングElixir、2016
0201デフォルトの名無しさん
垢版 |
2019/02/23(土) 10:27:04.01ID:apHI25Q1
thisや==は今ならeslint/tslint任せでほとんど問題ないね。
引数付きenumはようはUnion Typeだし、代数的データ型はTagged Union Typeかな。
パターンマッチそのものはないけどType Guardで似たようなことができる。
マクロとマルチプラットフォームはさすがにないな。
0203デフォルトの名無しさん
垢版 |
2019/02/23(土) 11:24:28.53ID:ks3X52WF
弊社、ガイジが導入したhaxeが完全な負の遺産化しててうんざりするわ
死ねとまでは思わないけど、産まれてこなければよかったのに
0204デフォルトの名無しさん
垢版 |
2019/02/23(土) 11:27:21.05ID:rwRcja1T
thisはそもそも使う必要がない
jQueryとか昔のライブラリを使うとthisを使わざるを得なくなって混乱する
変数スコープの問題は多分変数の巻き上げの事だと思うけど、TypeScriptは変数を宣言する前にアクセスはエラーだから変数スコープの問題は無い
0206デフォルトの名無しさん
垢版 |
2019/02/24(日) 19:32:04.72ID:iK4D+UQi
一般にバイナリ互換のこと。
スクリプト言語はソースコード=バイナリ扱いだが。

Qtとかのライブラリはソース互換やね。
そのライブラリと標準ライブラリ使う分にはマルチプラットフォーム。
0207デフォルトの名無しさん
垢版 |
2019/03/27(水) 22:29:10.88ID:ZMj2RB3N
TypeScriptのリテラル型を知って目から鱗だったんだけど、元ネタってどこなのかな?
TypeScript以前に採用していた言語とかある?
0208デフォルトの名無しさん
垢版 |
2019/03/28(木) 08:22:20.68ID:XxNMz1Hs
https://www.infoq.com/jp/news/2019/03/typescript-3-3-release

Flowは,少なくともこの分析を実施した1年前には,Facebookによって極めて閉鎖的な方法で進められていた言語です。
開発はまったく透過的ではなく,ロードマップも公開されていませんでした。
プロジェクトへのコントリビューションは,Facebook以外からはほとんどありませんでした。
対照的にTypeScriptは,数年前にGitHubに移動して以降はオープンソース開発を採用しています。
最新のロードマップを公開し,外部からのコントリビューションを受け入れ,全般的にコミュニティとの密接な関係を維持しています。

Flowオープンソースはほぼ放置されているので,現時点ではTypeScriptに切り替えた方がよいと思います。

このような懸念に対してFlowチームは,現在の進捗状況と2019年計画の見直しによる対処を始めている。
この概要の中で,FacebookのソフトウェアエンジニアであるAvik Chaudhuri氏は,FlowからTypeScriptへの移行について取り上げている。

 最近,Facebookを起源とするオープンソースプロジェクトの多くが,TypeScriptでのリライト計画を発表しています。
 Facebookでは個々のチームの独立性を強く尊重しており,各チームがロードマップを作成し,
 開発中のプロダクトに対して最大限の努力を払っています。TypeScriptへの切り替えを決定したプロジェクトは,
 この切り替えによって外部コントリビュータによる支援をより多く受けられるようになります。私たちはこの決定を尊重します。
0210デフォルトの名無しさん
垢版 |
2019/04/27(土) 22:21:18.33ID:DaKsj35I
export default Vue;
export as namespace Vue;

型定義が↑だとjsのスクリプトモード(import なし)で↓のようにvscode認識してしまって悲しい
new Vue();      // NG
new Vue.default(); // OK

export default Vue じゃなくて export = Vue なら大丈夫っぽいんだが
0212デフォルトの名無しさん
垢版 |
2019/05/07(火) 14:32:47.27ID:L9HTQYS7
質問なんですが、

interface TypeMap<T> {
 a: number
 b: string
 c: T
}

declare function test<T, K extends keyof TypeMap<T>>(arg: K): TypeMap<T>[K]

test("b")
test<number, "c">("c")

これをtest<number>("c")って書けるfunction testの定義の仕方ってあります?
0216デフォルトの名無しさん
垢版 |
2019/05/22(水) 08:13:28.81ID:hKcnqksZ
unknownからの簡単にキャストできるような値ばかりなら、確かにanyはいらんかったろうな
■ このスレッドは過去ログ倉庫に格納されています

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