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/
探検
TypeScript part3
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん
2018/04/26(木) 21:48:23.07ID:mMDBzDaB698デフォルトの名無しさん
2020/12/18(金) 05:11:45.78ID:7UB7snzp ブラウザ使っててよく Webページ が固まることがあるから、ちゃんとUIスレッド以外で処理しろよとよく思ってたが
JavaScript 自体がシングルスレッドだったのね
WebWoker とかいうのもあるみたいだが、MDN見るに、
言語側でがっつり管理するからスレッドセーフあんまり考慮しなくてもいいみたいだし、これは楽でいいわ
Java やってて、クリティカルセクションの処理が一番嫌いだった
デッドロックの原因探すの大変すぎた
JavaScript 自体がシングルスレッドだったのね
WebWoker とかいうのもあるみたいだが、MDN見るに、
言語側でがっつり管理するからスレッドセーフあんまり考慮しなくてもいいみたいだし、これは楽でいいわ
Java やってて、クリティカルセクションの処理が一番嫌いだった
デッドロックの原因探すの大変すぎた
699デフォルトの名無しさん
2020/12/18(金) 05:52:13.96ID:427cIB03 そもそもIO待ちにスレッドを使うのがナンセンスだったんだよな
700デフォルトの名無しさん
2020/12/18(金) 07:23:19.35ID:7UB7snzp まぁでも、
JavaScript のソースコード内に書いたものが全部同じスレッドで走ってる
ってだけで、setTimeout とかの実装内では普通に別スレッド走ってるのか。
そりゃそうだよな、そうしないと非同期処理なんてどうあがいても不可能だものね。
JavaScript のソースコード内に書いたものが全部同じスレッドで走ってる
ってだけで、setTimeout とかの実装内では普通に別スレッド走ってるのか。
そりゃそうだよな、そうしないと非同期処理なんてどうあがいても不可能だものね。
701デフォルトの名無しさん
2020/12/18(金) 09:04:21.16ID:TR+u0YNG 非同期処理はスレッドの場合とそうでない場合の2種類ある
そうでない場合は基本的にハードウェア割り込みで実装されてる
タイマーとか通信処理とか
ファイルアクセスもOS毎に非同期APIが有るけど、libuvは互換性の為に敢えて同期APIを使う処理をスレッドプールに投げているようだ
そうでない場合は基本的にハードウェア割り込みで実装されてる
タイマーとか通信処理とか
ファイルアクセスもOS毎に非同期APIが有るけど、libuvは互換性の為に敢えて同期APIを使う処理をスレッドプールに投げているようだ
702デフォルトの名無しさん
2020/12/18(金) 09:10:54.87ID:TR+u0YNG setTimeoutはスレッドを使ってない様に思うけど、結局の所ユーザー側でそれを知る術が無い
703デフォルトの名無しさん
2020/12/18(金) 12:01:30.61ID:hVx5pFA4 >>698の問題はスレッドがどうとか関係なくて、html中のある個所の内容が決まらないと
全体のレンダリングができない構造になっていたとか、jsをダウンロードしないと
レンダリングされないのにその取得に時間がかかっているとかそんなところだろうな。
全体のレンダリングができない構造になっていたとか、jsをダウンロードしないと
レンダリングされないのにその取得に時間がかかっているとかそんなところだろうな。
704デフォルトの名無しさん
2020/12/18(金) 13:13:24.97ID:7UB7snzp 最近ないように思うけど、1つのページがブラウザ全体をストールさせることが多かったのよ
そんでブラウザを起動し直さなければいけない
その原因が、JS のスレッドと ブラウザのレンダリングスレッド(UIスレッド)が同じスレッドを共有してることにある
DOM 書き換えてる最中に レンダリングされちゃうと、ページレイアウトがぐちゃぐちゃになるから、全部同じスレッドで処理してるんだけど、
JSの処理でUIが固まるのを防ぐには、JS の DOM 書き換え「以外」の操作を別スレッドでやって、レンダリングスレッドと同期処理すればいい
(Java の synchronize とかの要領)
DOM 自体が レンダリングスレッドに属してるのは、しょうがないと思う
昔、マルチスレッドで動作する UI ライブラリ の多くがデッドロックその他のバグでどうにもならなくなって廃棄された(Java でいう AWT)
ということで、UI が固まるのにはスレッドは関係あると思うのよ
まぁ書き方が悪かったのかもしれんが
あと、JS がシングルスレッドなのはとても良いことだと思ってるからね、自分は
マルチスレッド化したら、どのみち同期化処理に失敗して、デッドロックで今よりも固まること多くなるだろうから
参考にした:
https://stackoverflow.com/questions/30932870/why-doesnt-javascript-get-its-own-thread-in-common-browsers
そんでブラウザを起動し直さなければいけない
その原因が、JS のスレッドと ブラウザのレンダリングスレッド(UIスレッド)が同じスレッドを共有してることにある
DOM 書き換えてる最中に レンダリングされちゃうと、ページレイアウトがぐちゃぐちゃになるから、全部同じスレッドで処理してるんだけど、
JSの処理でUIが固まるのを防ぐには、JS の DOM 書き換え「以外」の操作を別スレッドでやって、レンダリングスレッドと同期処理すればいい
(Java の synchronize とかの要領)
DOM 自体が レンダリングスレッドに属してるのは、しょうがないと思う
昔、マルチスレッドで動作する UI ライブラリ の多くがデッドロックその他のバグでどうにもならなくなって廃棄された(Java でいう AWT)
ということで、UI が固まるのにはスレッドは関係あると思うのよ
まぁ書き方が悪かったのかもしれんが
あと、JS がシングルスレッドなのはとても良いことだと思ってるからね、自分は
マルチスレッド化したら、どのみち同期化処理に失敗して、デッドロックで今よりも固まること多くなるだろうから
参考にした:
https://stackoverflow.com/questions/30932870/why-doesnt-javascript-get-its-own-thread-in-common-browsers
705デフォルトの名無しさん
2020/12/18(金) 13:18:46.36ID:7UB7snzp JS で重めの処理をしたりバグがあっても、レンダリングスレッドと分離されてれば、
少なくとも UIが固まることはないということね(デッドロックがなければ)
あと、上で最初に書いた、ブラウザ全体が固まるって話は語弊あったかもしれない
ブラウザの各タブのレンダリングスレッドと、ブラウザ全体のUIスレッドは、多分分けられてるんだよね?
後でちゃんと調べます
少なくとも UIが固まることはないということね(デッドロックがなければ)
あと、上で最初に書いた、ブラウザ全体が固まるって話は語弊あったかもしれない
ブラウザの各タブのレンダリングスレッドと、ブラウザ全体のUIスレッドは、多分分けられてるんだよね?
後でちゃんと調べます
706デフォルトの名無しさん
2020/12/18(金) 13:30:26.86ID:Lq+ZSFwA firefoxがフリーズすることは最近ちょくちょくあったな
edgeに乗り換えたらきれいさっぱり直った
ffはもうだめかもわからんね
edgeに乗り換えたらきれいさっぱり直った
ffはもうだめかもわからんね
707デフォルトの名無しさん
2020/12/18(金) 16:42:31.82ID:7UB7snzp https://gimhana-ds.medium.com/how-firefox-and-chrome-use-process-and-threads-f58f478561f0
ブラウザのスレッドの話ココに載ってた
いろいろとたどってって疲れたので、全部は見てない
Chrome が Tab ごとにプロセスで、Firefox が Tab にマルチスレッド
Firefox もいっぱいプロセス作ってるけどね、ちゃんと読んだ人教えて
ブラウザのスレッドの話ココに載ってた
いろいろとたどってって疲れたので、全部は見てない
Chrome が Tab ごとにプロセスで、Firefox が Tab にマルチスレッド
Firefox もいっぱいプロセス作ってるけどね、ちゃんと読んだ人教えて
708デフォルトの名無しさん
2020/12/18(金) 16:44:48.76ID:7UB7snzp 「Firefox が Tab ごとにスレッド」って書きたかった
そのスレッドも Main Thread = UI Thread (DOM 操作と JS 実行)が1個って意味で、
Raster Thread とか、Composer Thread とか多分他にもいろいろスレッド作る
そのスレッドも Main Thread = UI Thread (DOM 操作と JS 実行)が1個って意味で、
Raster Thread とか、Composer Thread とか多分他にもいろいろスレッド作る
709デフォルトの名無しさん
2020/12/18(金) 17:50:47.93ID:m88v/MV8 すみません、TypeScriptって開発中はコンパイルなしでブラウザですぐに変更の動作確認をできますか?
710デフォルトの名無しさん
2020/12/18(金) 19:33:24.14ID:JhB3G5yf そういう時代が来るといいね
711デフォルトの名無しさん
2020/12/18(金) 19:42:28.67ID:1RoKReGQ Chromium Edge で、YouTube を見て、
動画を、5秒先へ進めたりすると、フリーズする
動画を、5秒先へ進めたりすると、フリーズする
712デフォルトの名無しさん
2020/12/18(金) 21:47:42.98ID:TR+u0YNG WebWorkerは完全にスレッドだぞ
更にAtomicsを使えばスレッド間でatomicなデータ更新が出来る
更にAtomicsを使えばスレッド間でatomicなデータ更新が出来る
713デフォルトの名無しさん
2020/12/18(金) 21:53:39.89ID:6FItt2sR WebWorker使いやすくて好き。並列処理面倒くさいからたまにしか使わないけど
714デフォルトの名無しさん
2020/12/18(金) 22:14:36.51ID:TR+u0YNG しかし、SharedArrayBufferはSpectreのせいでほぼ使えない状態だけどね
Spectreに対応したCPUが普及しきらない限り有効にされる事は無い
Webではもはや余計な機能追加はセキュリティーホールの元という認識でこれ以上進化することも無いだろう
ただ、ストアからインストールするPWAはネイティブアプリの代わりだから、機能追加していくと思われる
Spectreに対応したCPUが普及しきらない限り有効にされる事は無い
Webではもはや余計な機能追加はセキュリティーホールの元という認識でこれ以上進化することも無いだろう
ただ、ストアからインストールするPWAはネイティブアプリの代わりだから、機能追加していくと思われる
715デフォルトの名無しさん
2020/12/18(金) 23:02:27.28ID:2C+h9Dqf ストアの収益減らすの絶対許さないマンのアップル
vs
Webから情報吸いたいマンのグーグル
vs
Webから情報吸いたいマンのグーグル
716デフォルトの名無しさん
2020/12/19(土) 13:35:36.37ID:biviwPkb promise(もしくはasync/await)が使えたらシングルスレッドでも実質別段困らない
希ガス
希ガス
717デフォルトの名無しさん
2020/12/19(土) 15:04:10.72ID:+cK8B71a WebWorkerとか知らんかった...
メインと状態を共有しないのが明確なら便利そうだな
さもなくばAsync/Awaitか
メインと状態を共有しないのが明確なら便利そうだな
さもなくばAsync/Awaitか
718デフォルトの名無しさん
2020/12/19(土) 15:41:20.87ID:1ZOkfUtM I/O boundはPromiseでいいけど
CPU boundはPromiseじゃだめだからWebWorker使う
マルチコアの有効活用
CPU boundはPromiseじゃだめだからWebWorker使う
マルチコアの有効活用
719デフォルトの名無しさん
2020/12/19(土) 18:53:18.58ID:Z1BeWWR+ >>715
それは有る
Appleはブラウザの進化を完全に否定した(WebUSBとか実装しないと明言した)
建て前はセキュリティーだけど、真実はPWAがネイティブアプリと同等の事が出来るとApple税が取れなくなるからだろうね
それは有る
Appleはブラウザの進化を完全に否定した(WebUSBとか実装しないと明言した)
建て前はセキュリティーだけど、真実はPWAがネイティブアプリと同等の事が出来るとApple税が取れなくなるからだろうね
720デフォルトの名無しさん
2020/12/19(土) 18:56:13.80ID:dPku7W9W 税なら税で素直に払えばいい
それでいい製品が使えるならいいことだ
NHKのようなものだな
それでいい製品が使えるならいいことだ
NHKのようなものだな
721デフォルトの名無しさん
2020/12/19(土) 19:15:06.66ID:BJ7NL7s9 Appleが採用しない事で足並みが揃わなくなって、Web全体に影響するという……
722デフォルトの名無しさん
2020/12/19(土) 19:43:44.12ID:GiU9Z0Di 🍎に足並みを揃えない連中がよくない
723デフォルトの名無しさん
2020/12/19(土) 21:17:41.04ID:qtDJ4FDM SharedArrayBufferの代替手段って無いの?
結局これは解決する問題なの?
結局これは解決する問題なの?
724デフォルトの名無しさん
2020/12/19(土) 22:01:28.77ID:oadZnMoo WebUSBに関してはFireFoxも実装する予定はないので
足並みを揃えてないのはChrome
足並みを揃えてないのはChrome
725デフォルトの名無しさん
2020/12/19(土) 22:06:18.93ID:yZxXMpJa 目の前に機器があってスマホからコントロールしたい要求は一般的だと思うけど、USBの番号を個人で取れなくなったので、ブラウザに実装する意味は薄れたかもしれないですね。
726デフォルトの名無しさん
2020/12/19(土) 22:29:23.32ID:lChJAmlD ここだけはappleを応援するわ
消費者としてブラウザにどんどん変な機能つけるんじゃねぇ
消費者としてブラウザにどんどん変な機能つけるんじゃねぇ
727デフォルトの名無しさん
2020/12/19(土) 22:33:23.73ID:yZxXMpJa IoT的な意味合いで必要とする人たちが居るんですよ。
自分は見ないから動画機能を付けるなとか、聞かないから音機能を付けるなっていうのと同じでは?
自分は見ないから動画機能を付けるなとか、聞かないから音機能を付けるなっていうのと同じでは?
728デフォルトの名無しさん
2020/12/19(土) 22:44:29.90ID:8bUfeulY USB APIをサーブしてajaxでlocalhostと通信でいいじゃん
わざわざブラウザがサポートすることじゃない
わざわざブラウザがサポートすることじゃない
729デフォルトの名無しさん
2020/12/19(土) 22:47:08.81ID:8bUfeulY まあ百歩譲って乗せるとしても拡張でいいよな
標準化しようとするのはでしゃばりすぎ
標準化しようとするのはでしゃばりすぎ
730デフォルトの名無しさん
2020/12/19(土) 23:00:43.45ID:YoyJ/iet ブラウザがんばって欲しい
React + TS 最高
swift + storyboard とかいう糞オブ糞のそびえ立つ糞まみれは2度と触りたくない
React + TS 最高
swift + storyboard とかいう糞オブ糞のそびえ立つ糞まみれは2度と触りたくない
731デフォルトの名無しさん
2020/12/19(土) 23:55:21.82ID:Z1BeWWR+ PWAの定義が今一漠然としてるから、今後はその辺りが進化していくと思われる
で、PWAでない場合はJavaScriptの動作は思いっきり制限されるだろうね
ま、それで良いと思う
で、PWAでない場合はJavaScriptの動作は思いっきり制限されるだろうね
ま、それで良いと思う
732デフォルトの名無しさん
2020/12/20(日) 00:28:55.07ID:qaHDEdvT > わざわざブラウザがサポートすることじゃない
ほんとこれ
なぜわざわざブラウザでなんでもやろうとするのか
IoTなんだから普通にツールとかアプリとかドライバ書けよと
ほんとこれ
なぜわざわざブラウザでなんでもやろうとするのか
IoTなんだから普通にツールとかアプリとかドライバ書けよと
733デフォルトの名無しさん
2020/12/20(日) 00:29:51.25ID:L33Timbq 結局ああいうのって「すげええブラウザでこんなことできた!」
いいたいだけちゃうんか、みたいなのがマジ多い
いいたいだけちゃうんか、みたいなのがマジ多い
734デフォルトの名無しさん
2020/12/20(日) 03:36:56.04ID:BKQi3Qp0 ブラウザが高機能化しすぎてブラウザさえ動作すりゃいい感じになってきてる
最終的にOS=ブラウザまで進化しかねない
最終的にOS=ブラウザまで進化しかねない
735デフォルトの名無しさん
2020/12/20(日) 04:53:54.98ID:gM7i2qLz モバイル用OSがそんなかんじ
アプリを全てサンドボックスで隔離して出来ることを制限
じっくり時間をかけて出来ることを解放してきた
アプリを全てサンドボックスで隔離して出来ることを制限
じっくり時間をかけて出来ることを解放してきた
736蟻人間 ◆T6xkBnTXz7B0
2020/12/21(月) 18:34:44.48ID:Zh4p3jGs Web Workerの話が出たから貼っとこう
https://katahiromz.github.io/xword.js/
https://katahiromz.github.io/xword.js/
737デフォルトの名無しさん
2020/12/21(月) 18:45:09.04ID:cr+QDiZ1 ゴミサイトの宣伝すんなカス
738蟻人間 ◆T6xkBnTXz7B0
2020/12/21(月) 18:49:49.16ID:Zh4p3jGs これPromiseとWeb Workerのマルチスレッドでパズルを生成してる。組み合わせ無限大。しかもInternet Explorerでも動作する。まあ、素人にはひと目では分からんだろうな。
739デフォルトの名無しさん
2020/12/21(月) 19:13:00.25ID:cr+QDiZ1 ゴミサイトの宣伝すんなカス
740デフォルトの名無しさん
2020/12/21(月) 19:15:36.88ID:L7srYJg2 webworkerってjoinみたいなメソッドある?
741蟻人間 ◆T6xkBnTXz7B0
2020/12/21(月) 19:15:42.32ID:Zh4p3jGs 悔しいのお、悔しいのお
743デフォルトの名無しさん
2020/12/21(月) 19:25:34.90ID:ApmhBnYc 「蟻人間」でNGぶっこむだけだろうに…
745デフォルトの名無しさん
2020/12/21(月) 20:32:28.70ID:oIaO1Bbh 最近のCPUってコア数バラバラでかつ非対称なコア載ってるから、6個くらいWorker立ち上げて平等に処理投げるんじゃなくて、20個くらいのWorker立ち上げて非対称でいいから適当に処理投げてあとはOSに良きに計らってもらうとかの方がベターなのかな?
746デフォルトの名無しさん
2020/12/21(月) 20:34:43.73ID:ApmhBnYc navigator.hardwareConcurrency
でコア数取れるぞ
でコア数取れるぞ
748デフォルトの名無しさん
2020/12/21(月) 20:51:02.61ID:oIaO1Bbh749デフォルトの名無しさん
2020/12/21(月) 20:54:25.24ID:+ci58h/H750デフォルトの名無しさん
2020/12/21(月) 22:43:20.76ID:Z91q9rOU752デフォルトの名無しさん
2020/12/26(土) 09:41:16.66ID:3y5CuLti export interface TypeA {
paramters: {
[k: string]: {
// body
}
};
}
こんな型があるとき、上記bodyの部分の型を取り出すことってできますかね?
const f = (k: string, o: ???): TypeA => {
return { parameters: { [k]: o } };
};
こんなことがしたい。
paramters: {
[k: string]: {
// body
}
};
}
こんな型があるとき、上記bodyの部分の型を取り出すことってできますかね?
const f = (k: string, o: ???): TypeA => {
return { parameters: { [k]: o } };
};
こんなことがしたい。
753デフォルトの名無しさん
2020/12/26(土) 10:04:33.59ID:kvlSFYEN ヨーわからんがこうかね
bitどっとly
/3aJV7Hw
ts playground だが短縮URL NGワードになってるからすまんな
bitどっとly
/3aJV7Hw
ts playground だが短縮URL NGワードになってるからすまんな
754デフォルトの名無しさん
2020/12/26(土) 11:06:25.41ID:3y5CuLti そこの type Hage の定義に "extreme" を書かずに済ませたい。
この例だと {extreme:string} という型になる部分が変更されたとしても
type Hage の記述を変えずに済むよう TypeA の定義から取り出す
方法がないかと。
この例だと {extreme:string} という型になる部分が変更されたとしても
type Hage の記述を変えずに済むよう TypeA の定義から取り出す
方法がないかと。
755デフォルトの名無しさん
2020/12/26(土) 11:21:04.03ID:3y5CuLti ありがとう、わかった。
["extreme"] を削れば目的の型になりますね。
["paramters"] を使えばいいことに気付かなかった。
["extreme"] を削れば目的の型になりますね。
["paramters"] を使えばいいことに気付かなかった。
756デフォルトの名無しさん
2020/12/26(土) 12:19:31.06ID:kvlSFYEN |
| また髪の話してる
| 彡⌒ミ
\ (´・ω・,彡⌒ミ
(| |(´・ω・`):::: 感じ悪いよね
(Y /:(| |)::::::
し \:(Y /::
\し´
| また髪の話してる
| 彡⌒ミ
\ (´・ω・,彡⌒ミ
(| |(´・ω・`):::: 感じ悪いよね
(Y /:(| |)::::::
し \:(Y /::
\し´
757デフォルトの名無しさん
2020/12/27(日) 19:16:51.24ID:xvZc4lDU もう一つ教えてください。
typeTypeB =
{
tag: 'a';
/* a のボディ */
} | {
tag: 'b';
/* b のボディ */
};
こんな Tagged union type があるとき、 tag === 'a' の時の型(下記)を
取り出すことはできるでしょうか。
type x = {
tag: 'a';
/* a のボディ */
}
typeTypeB =
{
tag: 'a';
/* a のボディ */
} | {
tag: 'b';
/* b のボディ */
};
こんな Tagged union type があるとき、 tag === 'a' の時の型(下記)を
取り出すことはできるでしょうか。
type x = {
tag: 'a';
/* a のボディ */
}
758デフォルトの名無しさん
2020/12/27(日) 19:33:05.66ID:xvZc4lDU TypeB & { tag: 'a' } でいけた。ありがとう。
759デフォルトの名無しさん
2020/12/27(日) 19:36:45.35ID:MtHOITLb 型に欲情する変態さんは piotrwitek/utility-types でも npm 愛するといいぞ
760デフォルトの名無しさん
2020/12/27(日) 19:42:50.77ID:xvZc4lDU またまた教えてください。
type X = A | B | C | undefined;
この X から undefined を除いた型 (A | B | C) を求めるにはどうしたらいいでしょうか。
type X = A | B | C | undefined;
この X から undefined を除いた型 (A | B | C) を求めるにはどうしたらいいでしょうか。
761デフォルトの名無しさん
2020/12/27(日) 19:45:55.95ID:MtHOITLb762デフォルトの名無しさん
2020/12/27(日) 19:49:30.25ID:86OXbM3T 標準にExcludeあるじゃん
763デフォルトの名無しさん
2020/12/27(日) 19:49:45.20ID:xvZc4lDU ありがとう!
764デフォルトの名無しさん
2020/12/28(月) 00:46:42.66ID:0DUA8XV/765デフォルトの名無しさん
2020/12/28(月) 21:27:29.35ID:wzipnhb8 何に使うんじゃ…
漏れの限られた経験では、
x: (A | B | C | undefined)
が渡ってきたら、
if (x is A) { ... }
else if (x is B) { ... }
else if (x is C) { ... }
else if (x == undefined) { ... }
else {
(エラー)
}
ぐらいしかやることが無いキモス
漏れの限られた経験では、
x: (A | B | C | undefined)
が渡ってきたら、
if (x is A) { ... }
else if (x is B) { ... }
else if (x is C) { ... }
else if (x == undefined) { ... }
else {
(エラー)
}
ぐらいしかやることが無いキモス
766デフォルトの名無しさん
2020/12/28(月) 22:38:22.06ID:f0IE/THC 少し簡略化するけど
type A = { [k: string]: number };
type B = { [k: string]: string };
type C = { [k: string]: boolean };
ここで type X[string] で number | string | boolean を取り出したかったけど
undefined が混じっているとうまくいかなかった。
type A = { [k: string]: number };
type B = { [k: string]: string };
type C = { [k: string]: boolean };
ここで type X[string] で number | string | boolean を取り出したかったけど
undefined が混じっているとうまくいかなかった。
767デフォルトの名無しさん
2021/01/03(日) 19:57:38.08ID:p2o4CIkL typescriptのd.tsファイルについて網羅的に解説されているドキュメントはありますでしょうか
公式は最低限の事しか書かれていなくて。
例えば、test1.d.tsは以下の通りに書いてあって
export type A1 = boolean;
type A2 = boolean;
test2.d.tsは以下の通りに書いてある場合、
type B1 = boolean;
type B2 = boolean;
A2 B2はどっちも「type XX = boolean;」という書き方をしているのに、別のtsファイルで
const x1 : A2 = true; と書くと、Cannot find name A2 とエラーになる(importする必要がある)が
const x2 : B2 = true; と書くと、import無しでもエラーは出ない。
test1.d.ts はexport文があるから「このファイル内の定義は、importをしないと使えない」というようなモードになっているのかなと思うけど、このあたりの挙動について知りたい。
declare module文を使った場合とか、namespaceやらでネストされた場合どうなるのかとか、/// <reference types="xxx" /> と書かれているとどういう扱いになるのか とか
とにかくd.tsファイルの一番細かい仕様が見たい。
公式は最低限の事しか書かれていなくて。
例えば、test1.d.tsは以下の通りに書いてあって
export type A1 = boolean;
type A2 = boolean;
test2.d.tsは以下の通りに書いてある場合、
type B1 = boolean;
type B2 = boolean;
A2 B2はどっちも「type XX = boolean;」という書き方をしているのに、別のtsファイルで
const x1 : A2 = true; と書くと、Cannot find name A2 とエラーになる(importする必要がある)が
const x2 : B2 = true; と書くと、import無しでもエラーは出ない。
test1.d.ts はexport文があるから「このファイル内の定義は、importをしないと使えない」というようなモードになっているのかなと思うけど、このあたりの挙動について知りたい。
declare module文を使った場合とか、namespaceやらでネストされた場合どうなるのかとか、/// <reference types="xxx" /> と書かれているとどういう扱いになるのか とか
とにかくd.tsファイルの一番細かい仕様が見たい。
768デフォルトの名無しさん
2021/01/21(木) 09:27:06.31ID:RZX+x1N+ フロントエンド系の解説動画上げてる 英語話者の Youtuber
イケメン率高すぎじゃね?
イケメンじゃなくても、
リーナスやRMSやバーナーズリーみたいな、ひと目みただけで「変人だわ」って思う人が少ない
どうなってんのよ
お前らもイケメンなの?
イケメン率高すぎじゃね?
イケメンじゃなくても、
リーナスやRMSやバーナーズリーみたいな、ひと目みただけで「変人だわ」って思う人が少ない
どうなってんのよ
お前らもイケメンなの?
769デフォルトの名無しさん
2021/01/21(木) 14:08:52.40ID:eZuTDFAg ちなみにわしは自称福山雅治のイケメンだ
770デフォルトの名無しさん
2021/01/21(木) 14:56:12.52ID:vvq65HmA 俺もよく歩いてると三浦春馬さんやっぱり生きてたんですねって話し掛けられて困るわ
771デフォルトの名無しさん
2021/01/21(木) 19:34:01.03ID:uQRkfyi9 オレもしょっちゅう『二郎さんっ……!』って声を掛けられるから、「おやっ、オレは田宮二郎の生まれ代わりなのかな……?」って思ってたら、坂上二郎さんの生まれ代わりだったわ
772デフォルトの名無しさん
2021/01/21(木) 23:37:32.75ID:vvq65HmA >>771
加齢臭ヤバナイ?
加齢臭ヤバナイ?
773デフォルトの名無しさん
2021/01/21(木) 23:42:06.12ID:HlaAZkkn 加齢臭とかいうレベルでなく今の30代ぐらいならもう何の話してるかもわからんだろうな
774デフォルトの名無しさん
2021/01/22(金) 05:20:07.47ID:8pHZ8D0X TypeScript で、React やったけど、いちいちいちいち型定義めんどすぎな…
相性くそわるなめくじかよ
ビジネスモデルのオブジェクトとかは型定義したいが、
いちいち props のインターフェースとか書いてらんねー
変更があったらいちいちインターフェースも書き換えなきゃいけないし
みんなどうやって使ってるの?
Angular とか他のフレームワークだと TypeScript でのやりやすさ違う?
相性くそわるなめくじかよ
ビジネスモデルのオブジェクトとかは型定義したいが、
いちいち props のインターフェースとか書いてらんねー
変更があったらいちいちインターフェースも書き換えなきゃいけないし
みんなどうやって使ってるの?
Angular とか他のフレームワークだと TypeScript でのやりやすさ違う?
775デフォルトの名無しさん
2021/01/22(金) 05:27:56.87ID:txgEYXZL776デフォルトの名無しさん
2021/01/22(金) 05:29:38.84ID:txgEYXZL777デフォルトの名無しさん
2021/01/22(金) 14:46:40.93ID:AFRlD+KK > 変更があったらいちいちインターフェースも書き換えなきゃいけないし
おまえさんのようなうっかりガイジでも変更忘れがないよう指摘してくれてるというのに
わがままうっかりガイジにランクアップや
おまえさんのようなうっかりガイジでも変更忘れがないよう指摘してくれてるというのに
わがままうっかりガイジにランクアップや
778デフォルトの名無しさん
2021/01/22(金) 17:02:33.24ID:txgEYXZL リファクタリングしない人もいるからね。
(いまもみじかににいるし、
拒否るかも...その人)
(いまもみじかににいるし、
拒否るかも...その人)
779デフォルトの名無しさん
2021/01/25(月) 15:51:22.24ID:mMq6O8/K VSCode の補完で関数シグニチャ確認する時、カオスすぎない?
ライブラリがユニオンやら使いまくってるの多くて、パット見引数が何個あるのかわかりにくいし、
もう少し見やすいポップアアップ表示にならんのかな
ライブラリがユニオンやら使いまくってるの多くて、パット見引数が何個あるのかわかりにくいし、
もう少し見やすいポップアアップ表示にならんのかな
780デフォルトの名無しさん
2021/01/25(月) 18:07:26.17ID:+dPxUq7O781デフォルトの名無しさん
2021/01/25(月) 18:33:23.35ID:AK6f8agf c#以上にカオス…?
782デフォルトの名無しさん
2021/01/25(月) 22:54:08.93ID:+dPxUq7O 何倍も!
型の機能も遥かに高度だ!
型の機能も遥かに高度だ!
783デフォルトの名無しさん
2021/01/25(月) 23:03:58.08ID:+dPxUq7O784デフォルトの名無しさん
2021/01/25(月) 23:14:46.15ID:NBocXyOE JavaScriptというそび糞をまともにするためだ
しゃーない
しゃーない
785デフォルトの名無しさん
2021/01/26(火) 03:28:35.94ID:WX4s+KJB 型を半ば無理矢理付けてるだけで、最終的には型を削除したJavaScriptになる
要するに動的型言語というのは、それだけ豊富な表現力を秘めてると言うことだ
本来はそれと引き換えに実行速度が犠牲になるもんだが、VMのチューニングによりネイティブコードと遜色無いのが凄いところ
要するに動的型言語というのは、それだけ豊富な表現力を秘めてると言うことだ
本来はそれと引き換えに実行速度が犠牲になるもんだが、VMのチューニングによりネイティブコードと遜色無いのが凄いところ
786デフォルトの名無しさん
2021/01/26(火) 04:01:05.59ID:SEH/ccP0 後半まで読み進めると
おおおーー!ってなる。
https://html5experts-jp.cdn.ampproject.org/v/s/html5experts.jp/shumpei-shiraishi/24660/amp/?amp_gsa=1&amp_js_v=a6&usqp=mq331AQHKAFQArABIA%3D%3D#amp_tf=%251%24s%20%E3%82%88%E3%82%8A&aoh=16115828872772&csi=1&referrer=https%3A%2F%2Fwww.google.com&share=https%3A%2F%2Fhtml5experts.jp%2Fshumpei-shiraishi%2F24660%2F
protocol と 可変長型は c#で昔から
待望してた機能だ!
おおおーー!ってなる。
https://html5experts-jp.cdn.ampproject.org/v/s/html5experts.jp/shumpei-shiraishi/24660/amp/?amp_gsa=1&amp_js_v=a6&usqp=mq331AQHKAFQArABIA%3D%3D#amp_tf=%251%24s%20%E3%82%88%E3%82%8A&aoh=16115828872772&csi=1&referrer=https%3A%2F%2Fwww.google.com&share=https%3A%2F%2Fhtml5experts.jp%2Fshumpei-shiraishi%2F24660%2F
protocol と 可変長型は c#で昔から
待望してた機能だ!
787デフォルトの名無しさん
2021/01/26(火) 05:29:01.62ID:pU44oeo6788デフォルトの名無しさん
2021/01/26(火) 05:52:17.01ID:pU44oeo6789デフォルトの名無しさん
2021/01/26(火) 07:02:54.66ID:RzMbHMsq >>786
可変長型もう入ってなかったっけと思ったら3年前の記事か
可変長型もう入ってなかったっけと思ったら3年前の記事か
790デフォルトの名無しさん
2021/02/10(水) 08:45:05.84ID:F9HUbn2D TypeScript の型定義に凝りすぎじゃね?
https://neos21.net/blog/2021/02/09-02.html
アンサー: なぜTypeScriptの型定義に凝るのか
https://qiita.com/uhyo/items/3bc5f951f922804ede51
https://neos21.net/blog/2021/02/09-02.html
アンサー: なぜTypeScriptの型定義に凝るのか
https://qiita.com/uhyo/items/3bc5f951f922804ede51
791デフォルトの名無しさん
2021/02/10(水) 10:21:36.03ID:qX2MPAZ0 サードパーティライブラリの型定義に関しては、
定義書くのめんどくさそうなときは any で通してる
型定義あったほうが便利なのは確かなので、
作業自動化して楽にしてくれるツール出てくるとありがたいなと思ってる
インテリセンスの進化とか
あと、VS Code で、TypeScript の型定義読みにくすぎ、
ドキュメント書いてあること少なすぎ、JavaScript のコードに直接とべねーすぎ(?)
でも、こういうアーキテクチャに関する抽象的な議論って
個々の案件に落とし込まないと本質見えてこないことととか、
そもそも想定する状況が議論する相手と食い違ってることがあるから
GitHub にある具体例でも明示してくれると議論は捗るんじゃないかなと思う
定義書くのめんどくさそうなときは any で通してる
型定義あったほうが便利なのは確かなので、
作業自動化して楽にしてくれるツール出てくるとありがたいなと思ってる
インテリセンスの進化とか
あと、VS Code で、TypeScript の型定義読みにくすぎ、
ドキュメント書いてあること少なすぎ、JavaScript のコードに直接とべねーすぎ(?)
でも、こういうアーキテクチャに関する抽象的な議論って
個々の案件に落とし込まないと本質見えてこないことととか、
そもそも想定する状況が議論する相手と食い違ってることがあるから
GitHub にある具体例でも明示してくれると議論は捗るんじゃないかなと思う
792デフォルトの名無しさん
2021/02/10(水) 12:42:09.82ID:vAMcyE+N 弊社は障害者雇用枠しかいないのでPHPしか書けません並の駄文書いてる奴って
生きてて恥ずかしくないのかなって思っちゃう、ごめんね
生きてて恥ずかしくないのかなって思っちゃう、ごめんね
793デフォルトの名無しさん
2021/02/10(水) 14:59:14.96ID:J3IrN4Ey >>790
この人有名人なの?
個人ブログに対する反応としては量が多くて驚く
アンサーのほうは避けられない複雑性を
”複雑な型”で表現した場合としない場合のトレードオフについては
“消えてしまうことは無い”で濁してるだけで正面から回答してないよね
最初のブログの人も感覚的な話だからどっこいどっこいだけど
↓こういうのは頑張りすぎじゃねって感じる
type ArrayOfLengthRec<Num, Elm, T extends unknown[]> = T["length"] extends Num ? T : ArrayOfLengthRec<Num, Elm, [Elm, ...T]>
この人有名人なの?
個人ブログに対する反応としては量が多くて驚く
アンサーのほうは避けられない複雑性を
”複雑な型”で表現した場合としない場合のトレードオフについては
“消えてしまうことは無い”で濁してるだけで正面から回答してないよね
最初のブログの人も感覚的な話だからどっこいどっこいだけど
↓こういうのは頑張りすぎじゃねって感じる
type ArrayOfLengthRec<Num, Elm, T extends unknown[]> = T["length"] extends Num ? T : ArrayOfLengthRec<Num, Elm, [Elm, ...T]>
794デフォルトの名無しさん
2021/02/11(木) 02:00:22.02ID:jkz/J9rH まぁでも型定義するの楽しいからね
パズルみたいで
夢中になっちゃうのは分かる
パズルみたいで
夢中になっちゃうのは分かる
795デフォルトの名無しさん
2021/02/11(木) 12:28:55.00ID:IWbE3xWm796デフォルトの名無しさん
2021/02/11(木) 12:32:46.43ID:89K1HM4Z 初心者のうちは考えなくて良いんだよ。
わけ解らなくてもコード補完してくれる位
思ってれば良い。
わけ解らなくてもコード補完してくれる位
思ってれば良い。
797デフォルトの名無しさん
2021/02/11(木) 19:55:55.18ID:yR+7bkmQ コード補完力・エラー発見力を高めるために型書いてる感はある
JavaとかGoの型を”書かねばならない”という強制感がないんだよな
JavaとかGoの型を”書かねばならない”という強制感がないんだよな
798デフォルトの名無しさん
2021/02/11(木) 21:33:21.20ID:jkz/J9rH コード補完はすごいメリットだよね
あと型定義通ってると書いてて安心するし
あと型定義通ってると書いてて安心するし
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【外交】元台湾総統・馬英九氏、高市首相発言に「台湾を危険にさらす」台湾海峡の問題は「両岸の中国人が自ら話し合うべき」★2 [1ゲットロボ★]
- 高市首相答弁を“引き出した”立民・岡田克也氏が改めて説明「なぜ慎重な答弁をされなかったのか。非常に残念に思っている」 ★8 [ぐれ★]
- 「母の部屋に安倍氏が表紙の機関誌が」「(安倍氏が被害者なのは)不思議に思いませんでした」山上被告の妹が証言 [おっさん友の会★]
- 【次の一手】台湾問題で小林よしのり氏が私見「まさに戦争前夜」「ただちに徴兵制を敷いて、高市支持者を最前線へ」… ★5 [BFU★]
- 【野球】大谷翔平、佐々木朗希、山本由伸らがWBC辞退なら広がる不協和音… 『過去イチ盛り上がらない大会』になる可能性も★2 [冬月記者★]
- 【国際】ロシアはすでに戦争準備段階――ポーランド軍トップが警告 [ぐれ★]
- 【高市売り】円安、止まらず!凄い勢いで暴落中。157円へ [219241683]
- (´ん`)「公明党、お前だったのか。自民党から国民を守ってくれていたのは...」 [603416639]
- 1,000万円のBMWに擦ってしまった札幌のガキ、捕らえられてガチで詰む [329329848]
- 格安風俗行ってきた
- 【悲報】ヤフコメ民「中国が水産物を輸入禁止にするなら、日本国民向けに安く販売すればいい。中国依存から脱するべき」 [153736977]
- SNKの悪役はギース、ルガール、山崎と魅力的なのが多いよね
