TypeScript part4

1デフォルトの名無しさん
垢版 |
2021/12/30(木) 22:57:02.78ID:XEA11GKy
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/
part3
https://mevius.5ch.net/test/read.cgi/tech/1524746903/
2022/08/26(金) 08:46:09.94ID:yW+yR6PJ
Recordはキーがいくつかの既知の値のみに限られる場合に使う
{ [key: Key]: Value }だとキーが何でも入っちゃうでしょ
175174
垢版 |
2022/08/26(金) 10:07:43.28ID:yW+yR6PJ
限られるというより、必ず既知のキーを持っていることが保証されるというべきか
record.knownKey のような既知のキーによるアクセスがタイプセーフになり、コード補完も効く
2022/08/26(金) 10:18:44.77ID:XmC41P2C
微妙にインデックス型とmapped typeがごっちゃになってて話をややこしくしてる気がする
2022/08/26(金) 22:54:52.76ID:wGXHgoK/
>>173
それはただのオブジェクト型だと思うが
178.NET MAUI HighScool
垢版 |
2022/11/03(木) 11:06:25.02ID:P57hKE9o
もしかしてTypeScriptってC#で良いのでは?
静的型付け言語だしオブジェクト指向だし作った人も一緒
2022/11/03(木) 11:18:14.22ID:/OhXuECX
C#でいいならわざわざ同じ人が新言語作らないだろ
ヘルスバーグはMS内では神みたいな扱いらしいから、自分で意味ないと思ってる仕事なんかやらないよ
2022/11/03(木) 11:27:45.04ID:BN1z7WMM
TypeScriptが解決してる問題をC#が全て解決出来るか考えてみれば?
181.NET MAUI HighScool
垢版 |
2022/11/03(木) 11:38:56.77ID:P57hKE9o
>>180
できてるじゃん
182デフォルトの名無しさん
垢版 |
2022/11/03(木) 12:08:35.27ID:S9tMl46F
or型というのかunion型というのか忘れたけど、C#にはなくない?
type a = b | c

(C#にもこの機能欲しい)
2022/11/03(木) 12:23:54.28ID:d31vVPfb
JavaScriptに静的型付けの恩恵を与えるために作られたのがTypeScript
C#でそれは出来ないでしょ
184.NET MAUI HighScool
垢版 |
2022/11/03(木) 12:26:39.11ID:Kj7ywx2W
>>183
C#が静的型付けじゃん
2022/11/03(木) 12:29:42.91ID:d31vVPfb
C#ではJavaScriptに静的型付けの恩恵を与えられないでしょ
186.NET MAUI HighScool
垢版 |
2022/11/03(木) 12:39:42.87ID:Kj7ywx2W
>>185
なんで?
2022/11/03(木) 12:47:16.05ID:d31vVPfb
>>186
君はC#がJavaScriptに静的型付けの恩恵を与えられると思ってるの?
2022/11/03(木) 12:57:24.44ID:t+iDkaHi
>>182
これについてはTypeScriptが便利というよりは、JSのやり方に合わせるために必要となっているものだと思う
C#では型が条件によってコロコロ変わるような設計は普通しないから、nullabilityさえ指定できれば多くの場合十分
189.NET MAUI HighScool
垢版 |
2022/11/03(木) 13:04:33.62ID:fiCeisHS
>>187
いや別にJavaScript使う必要なくね?
2022/11/03(木) 13:12:15.66ID:d31vVPfb
>>189
それは論点のすり替えでしょ
2022/11/03(木) 14:21:47.63ID:M3w0A0V3
代数的データ型は静的型付け言語にもあるよ。
最近のC#でも出来るけど記述量が多い。F#なら比較的楽に書けるけど。
2022/11/03(木) 15:50:32.38ID:BAhN8xRm
typescriptが実行時型安全まで保証してくれたらもう他の言語いらんのよな
REST APIというかJSONとの相性もマックスバリューだし
世にはびこっている型なし糞言語を全て地獄に葬り去ってほしい
2022/11/03(木) 16:11:11.85ID:cSIPlVD9
>>191
union typesは静的型において一般的な直和型とはかなり違ってて癖が強い
値が型持ってないからね
2022/11/03(木) 16:27:43.63ID:M3w0A0V3
>>193
まあそれはそうか。型ガードベースだもんね。
別に型が一致してなかったとしてもメンバさえ合ってれば雑代入しても問題ないし。
2022/11/03(木) 18:23:11.89ID:zVDUtzQU
>>192
型をバリデーションライブラリから生成すると捗るよ
2022/11/03(木) 20:49:50.25ID:BAhN8xRm
>>195
おっ zodmanか?
2022/11/03(木) 20:56:17.04ID:tn2ZhR3p
interface/classからjsonschemaを生成して、それを型ガード関数で使うってのが鉄板。
2022/11/03(木) 21:05:34.21ID:zVDUtzQU
>>196
すまねぇsuperstructなんだ。すまねぇ。

>>197
AJVはコードサイズデカくね?
2022/11/03(木) 21:36:19.22ID:tn2ZhR3p
コードサイズは気にしたことがないがスキーマ手書きは面倒臭いからやだなあ。
200デフォルトの名無しさん
垢版 |
2022/11/03(木) 22:05:24.52ID:S9tMl46F
RestAPIの型チェックはio-tsっていうライブラリつかってバリデーションしてるな。
実行時コストがあるけど、自分は業務アプリがメインなんで変な結果で次に進まない方が大事。
2022/11/03(木) 22:38:04.12ID:zVDUtzQU
>>199
ZodとかSuperstructとかはtypeで型書くのとほぼ同じくらいの手間でバリデーションと型が生成されるからすげー楽だよ。
2022/11/03(木) 22:52:51.54ID:tn2ZhR3p
うーん、俺はやっぱりTypescriptで書いた型そのまま使える方が楽だわ。
2022/11/04(金) 15:37:16.21ID:NHN4pq/h
HighScool君は納得して帰ったのか
2022/11/04(金) 23:24:08.39ID:/YFZG+0u
superstruct と zod ならどっちがええのんか?
205.NET MAUI HighSchool
垢版 |
2022/12/16(金) 16:55:41.78ID:3qj0lL1U
C#だとvar型でも何ら問題無いと思われてるのにTypeScriptのanyはなんでTwitterでネタにされるんでしょうか?
私もあまりvar型使いませんが公式とかvar型使いまくってるしTypeScriptでany使っても何ら問題なさそうなのですが…
2022/12/16(金) 17:30:57.27ID:p0Ky0qXF
コーディング時にvarは右辺で型が決まるけどanyは決まらないからかな
207.NET MAUI HighSchool
垢版 |
2022/12/16(金) 18:26:46.45ID:3qj0lL1U
>>206
決まらないんですか?
ではvar型ではなくdynamic型と言うことなのですかね
2022/12/16(金) 21:33:55.14ID:AqSpfMIV
そもそもvarは正確には型じゃないだろ
2022/12/16(金) 21:58:06.83ID:V2l7/OO4
var型はないな

型の堅牢性などを享受するためにTypeScriptを使用しているはずなのに、anyを持ち出せばそれが途端に失われるから絶対に使わない方がいい
そして確かにanyはdynamicに近いものと考えて良い
2022/12/16(金) 22:10:24.90ID:Hm0gKYO4
TypeScriptに対する理解が浅いのはともかくC#の理解もそんな程度だったのかこのコテ
211.NET MAUI HighSchool
垢版 |
2022/12/17(土) 00:18:30.36ID:WFRGIGZB
>>208
型推論型だろ
>>210
何いってんだこいつ?
212.NET MAUI HighSchool
垢版 |
2022/12/17(土) 00:22:25.11ID:WFRGIGZB
dynamic型は次の値を入れたらその型に変わる
例えば
dynamic x="おはよう"
dynamic x=123
でも大丈夫なわけ
anyは型の再代入ができないって見たけど?これdynamic型なの?
2022/12/17(土) 00:38:58.67ID:1fKT+2Wj
>>178程度の理解のヤツに何を説明しても無駄よ
2022/12/17(土) 00:50:14.95ID:/cYfBcZ5
>>212
流石にこれは触っちゃいけないレベル
2022/12/17(土) 00:55:05.65ID:Q7rx/k0e
anyはまさにJavaScriptの元々の変数の扱い様そのもの。
216.NET MAUI HighSchool
垢版 |
2022/12/17(土) 01:46:39.51ID:WFRGIGZB
>>213
TypeScriptはC#以下だったってわけか
理解
2022/12/17(土) 01:54:57.82ID:Q7rx/k0e
目的が違うんだよ。C#ではTypeScriptのようなことは出来ない。
良い意味でも悪い意味でもJavaScriptのスーパーセットかつトランスパイラである必要があるんだから。
ただTypeScriptが将来C#でやってることを概ね肩代わりすることは可能だったりはするんだけどね.netライブラリをそのまま動かすように改変していくことも障害は少ない。
2022/12/17(土) 02:13:01.40ID:dtBkzR03
そいつにかまうなよ
あちこちの言語やフレームワークスレに乗り込んでは意味不明な喧嘩売って
C#マンセーMAUIマンセーしてるだけの荒らし
2022/12/17(土) 03:00:17.54ID:7f5jCiop
再代入と型は関係ないだろ
見た感じC#も満足に使えてないじゃん
220.NET MAUI HighSchool
垢版 |
2022/12/17(土) 04:20:14.04ID:WFRGIGZB
>>219
どこが?
dynamic型知ってる?
2022/12/17(土) 08:49:17.76ID:J7I3yK2m
>>211
まぁ初心者なら便宜的に型だって覚えときゃいいよ

>>212
型の再代入って何?
値の再代入とは違うの?
222.NET MAUI HighSchool
垢版 |
2022/12/17(土) 11:38:05.95ID:WFRGIGZB
>>221
値は型があってたら普通は再代入はできる
ただ型があってなかったらできない
dynamic型は型があってなくても再代入できる
2022/12/17(土) 12:01:06.61ID:d07Wp+U/
>>222
それをC#では型の再代入って呼ぶの?

TypeScriptでは変数をletで宣言すれば値を再代入できる
変数がany型ならどんな型の値でも代入できる
変数をconstで宣言すれば型が同じであろうと再代入できない
>>219の言ってるのはそういうこと
224.NET MAUI HighSchool
垢版 |
2022/12/17(土) 12:25:09.54ID:EKmrQGNL
>>223
そういう決まった名前無いけどdynamic型は型を変えれるからそう言ってる
225.NET MAUI HighSchool
垢版 |
2022/12/17(土) 12:25:55.57ID:EKmrQGNL
つまりletがvarでanyがdynamicってことか
2022/12/17(土) 12:32:09.45ID:AZCBrKeq
ここでもバカ晒してるのかよw
227.NET MAUI HighSchool
垢版 |
2022/12/17(土) 12:38:11.73ID:WFRGIGZB
>>226
何いってんだこいつ?
2022/12/17(土) 12:56:35.19ID:d07Wp+U/
>>225
説明の仕方が悪かったか

C#の
dynamic x = "abc";
x = 123; //OK
に相当するのは
let x:any = "abc";
x = 123; //OK

var y = "abc";
y = "def"; //OK
y = 123; //NG
に相当するのは
let y = "abc"
y = "def"; //OK
y = 123; //NG

変数の型を推論に任せるときは型指定を省略する
229.NET MAUI HighSchool
垢版 |
2022/12/17(土) 14:07:48.19ID:WFRGIGZB
>>228
なるほど理解したサンクス
2022/12/17(土) 18:19:24.77ID:EAGB3+7T
なんでぽまいらはC#の話をしているんだ?
231.NET MAUI HighSchool
垢版 |
2022/12/17(土) 18:58:14.82ID:WFRGIGZB
anyはネタにされるけどvarはネタにされないなと思ってさ
まぁ勘違いだったんだけどね
2022/12/17(土) 19:14:45.81ID:ETb1szGB
なぜanyがネタにされたり忌み嫌われたりするのかはその機能だけ見ても分からんだろうね
言語特有の背景を理解してこそ
https://qiita.com/uhyo/items/aae57ba0734e36ee846a
2022/12/17(土) 20:38:09.95ID:/cYfBcZ5
any無しはJSONの扱いが面倒臭過ぎるんだよなあ
必要に応じて型のランタイムチェックを入れてキャストできる機能さえあれば格段に便利になるんだが
2022/12/17(土) 20:55:50.21ID:AZCBrKeq
ユーザー定義型ガードで足りると思うが
2022/12/21(水) 14:23:05.41ID:FWjNfdlT
JSONだろうがanyを許すな。Zodとか使うのだ
236デフォルトの名無しさん
垢版 |
2023/01/03(火) 23:03:14.80ID:6VbKu+1R
pythonを書いていると型縛りが馬鹿らしくなる
2023/01/03(火) 23:51:28.97ID:FIKRmyvH
JavaScriptを書いていると型縛りが馬鹿らしくなる
みんながそう思ってたらTypeScriptは生まれてこなかっただろうね
2023/01/04(水) 00:03:33.25ID:eKtKRLft
型なんて要らねーとか言ってるのは、ほぼ1人でコーディングしてる奴
まぁ、実際1人でなら要らないかも知れない
これが複数人でコーディングする事になると、他人が実装した関数にどんなデータを渡していいか全然分からない
その為にTypeScriptがある
2023/01/04(水) 00:08:02.09ID:PCFpglko
型がない方が縛りプレイだろ
240デフォルトの名無しさん
垢版 |
2023/01/04(水) 00:44:19.33ID:B1scSs4x
JavaScriptは引数の数すらチェックされない上に暗黙の変換にundefined/null/NaNと昔はブロックスコープもなくてバグの温床てんこ盛りだったからやろ

intとかStringとかのベーシックな型を書きまくつてるコードを見ると欠陥言語だなと思う
241デフォルトの名無しさん
垢版 |
2023/01/04(水) 09:28:28.37ID:77WW46pZ
>>239
縛り方を間違うと死ぬからな
2023/01/04(水) 10:15:30.84ID:y9fxcgcU
Flow「…」
2023/01/04(水) 11:23:06.77ID:PU4coe7B
パラメタ名・変数名で型がわかるようにしとけば大概は済む
引数の個数をテキトウに呼ぶ奴がいたら、それはそんな作り方する方がおかしい
2023/01/04(水) 11:53:32.34ID:+W5BVHVt
そういう開発者にのしかかる煩わしさを軽減するのが型の役目だろうに
245デフォルトの名無しさん
垢版 |
2023/01/04(水) 16:13:02.47ID:s5vEki4C
コーディングルールの運用で型限定するのも
コンパイラにまかせて型限定するのも
少なくとも js に限って言えば前者の方が手間は少ない
2023/01/04(水) 16:35:42.97ID:WgdCy7ph
本気で言ってるのか・・・?
2023/01/04(水) 16:38:46.50ID:oLi3mo91
>パラメタ名・変数名で型がわかるようにしとけば大概は済む

よく事故るのは受け渡すオブジェクトのメンバーの有無だったりするけどそれには無力だな。
2023/01/04(水) 16:48:19.89ID:PU4coe7B
大概、おおむねって話よ
よほど便利だろうから、こういう言語が生れたのだろうし全否定するわけではない
あと、処理系が変数の型を把握できても、しかるべき名前でないと、開発者に分かりにくい場合がある
自作でもこれなんだっけ?紛らわしいなって、結局名前弄ったり、名前って大事
249デフォルトの名無しさん
垢版 |
2023/01/04(水) 16:56:26.80ID:+smwzq4n
型付けはあった方が良いけど、肝心の成果物がしょーもないことは多々あるな
最近まで参画していたアプリはすげー健康なブスだった
2023/01/04(水) 17:01:25.31ID:WgdCy7ph
開発途中で型の変更が必要になったとき安全に漏れなく修正できるメリットとかは無視できないんだけど
今までそういう経験がなかったんだろうか
2023/01/04(水) 17:46:37.74ID:JvBm8lal
そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
それよりも代入により生じる依存関係を静的に追跡可能であることが重要で、その点では型があることで飛躍的に静的解析の精度が上がる
ただ、そのためには静的解析しやすい作りになっていることが大前提だ
動的型畑の人って概してオブジェクトと連想配列の区別が曖昧で、静的型に馴染んだ人からすると信じられないような型安全もクソもないコード書くからな
それを根本的に改めないなら型なんて大して役に立たん
2023/01/04(水) 18:22:26.69ID:thANRos2
>そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
その影響しそうな箇所の把握に型があるのとないのでは大きく正確性や効率に差が出てくるでしょって話
2023/01/04(水) 22:43:59.04ID:PCFpglko
まぁRubyやPHP出身の低能にそもそも型書かせるのが難しいという意見には同意
根本的に教養・学が足りないから、どうしようもない
もはや言語仕様で救えないレベルの話である
2023/01/04(水) 22:52:50.06ID:492NQUrQ
動的型畑の奴が一概にバカとは思わないが、オブジェクトの全プロパティ舐めて値を書き換えたりするコードが突如出現したりして面食らう
根本的に思考回路が我々とは違うのだなと感じる
255デフォルトの名無しさん
垢版 |
2023/01/04(水) 23:21:22.18ID:+smwzq4n
クスクス
2023/01/05(木) 10:41:34.55ID:Cbg+aaE9
>240
>暗黙の変換

これが諸悪の根源
257デフォルトの名無しさん
垢版 |
2023/01/05(木) 21:34:07.80ID:OE/QT1xu
JavaScriptは信用できない、JavaScriptは危険。

だからJavaScriptを撲滅しようとした時代があったんだよな。

JavaScriptそのものは書くものではなくて、使うものに変化した。
2023/01/05(木) 22:57:13.13ID:ySLiYJwl
JSを半端に知ってるやつこそそう言うけど、地雷がたくさん埋まってる以外は悪い言語じゃない。TypeScriptも今となっては薄いラッパーに過ぎないし
2023/01/05(木) 23:01:32.86ID:+/A/RNe/
何作るかによるな
んで、Typescriptでしょーもないもの作ってる奴はかなり多い
2023/01/06(金) 00:04:22.96ID:B+7qMiMZ
動的型付けでしょーもないもの作ってる奴の方が圧倒的に多い事実
261デフォルトの名無しさん
垢版 |
2023/01/06(金) 16:55:41.96ID:YIB2cDqh
jsもperlも卒業しろよ
2023/01/07(土) 02:08:56.86ID:cY6/G25e
TSも卒業してrust書け
2023/01/07(土) 14:15:02.15ID:8dRqY2Xm
ビルドが遅いからヤダ
2023/02/02(木) 13:12:52.48ID:JJCniKqD
(   )y-~~ (  >)y-~~( >-)y-~~( >-< )y-~~ ウマスギル・・
2023/02/27(月) 18:54:27.47ID:oOpYqea1
男卒業してTSしろ
266デフォルトの名無しさん
垢版 |
2023/03/12(日) 13:16:33.47ID:s6IZ9iua
return this.#instance!;
https://github.com/denoland/showcase_chat/blob/970c56fbb229f00805c0f3b0adde6f4232446a3e/helpers/loader.ts#L36

! って何なんや?
2023/03/12(日) 13:55:58.57ID:BMIpSqUT
nullとかundefinedじゃねーよって意味
2023/03/12(日) 21:52:14.15ID:mg++gyQG
undefinedっていらなくない?
全部nullと同等にしてほしいわ
269デフォルトの名無しさん
垢版 |
2023/03/12(日) 23:18:21.71ID:s6IZ9iua
>>267
助かった
記号はググりずらくて困ってたわ
2023/03/12(日) 23:38:13.62ID:MrtVVZC+
>>269
次また困ったら解読アシスタントに貼り付けるといいよ
https://typescriptbook.jp/code-reading-assistant#eJzT11d43DgZjFa_WL74xaq1jxtnPm7qfty0-XHznsfNnY-bJj1tXfq0a_bjxumPG5c9bux_3LjgcePUx40tXEWpJaVFeQolGZnFesqZecUliXnJqYrWAJnzL3Q
271デフォルトの名無しさん
垢版 |
2023/07/30(日) 19:53:15.24ID:dgsp3YJD
しーん
2023/09/26(火) 00:05:26.71ID:AayxzQ1y
しーん2
2023/10/08(日) 11:41:26.71ID:apfSCKMz
しーん3
274デフォルトの名無しさん
垢版 |
2023/11/11(土) 14:20:03.22ID:Sje4N6L2
TypeScript が作られた由来に関連しての事ですが
JavaScript と CSSは
直感的ではなく地雷陥穽満載の言語だと思い
苦痛を感じているのですが

Web開発が根本的にもっと簡単に楽になる事は
近い将来ありえますでしょうか。
ブラウザ自体とDOM操作が
JavaScriptでしか実行できない事は
永遠に続くのでしょうか。
レスを投稿する

5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

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