TypeScript part4 (396レス)
上下前次1-新
166: 2022/06/30(木)01:29 ID:9mtgPMTA(1) AAS
>>165
普通はfの型をtにしないと思うのだが、どういう意図があるの?
167: 2022/06/30(木)07:51 ID:dQhuKSOV(1) AAS
>>165
>のように同名の型のまま戻り値の定義を書き換えるということはできるのでしょうか?
型定義を後付けで変更できたらいろんな前提がひっくり返る気が
そんなことが必要な状況が想像できないけどコードの臭いがプンプンする
168: 2022/06/30(木)09:29 ID:Rcw/gVlt(1/2) AAS
ライブラリの型が間違ってるとか?
質問あるあるだが、抽象化も大事だが、具体的な状況も書き添えると回答してもらいやすくなると思うよ
そもそもの質問がずれてるとかもあるからね
169: 2022/06/30(木)11:29 ID:Argu0lpR(1/2) AAS
>>165
です。ありがとうございます。
実際のケースでお話しします。
・ライブラリの型を利用している。
・ライブラリの実装をそのまま真似ている。(実装は変えられる。)
・anyは使わない方針。
の状況です。
省23
170: 2022/06/30(木)12:31 ID:Rcw/gVlt(2/2) AAS
5chだと読みづらいからts playgroundなりcode sandboxなりに書いて欲しい
171: 2022/06/30(木)12:53 ID:Argu0lpR(2/2) AAS
>>165 です。
すみません。かなり省略して、改行も削除しました。
伝えたかったのは、以下です。
外部リンク:tsplay.dev
172: 2022/08/26(金)00:55 ID:z3bi9+6P(1) AAS
Recordとmapped typesの使い分け方が分かりません
Record<Key, Value>と{ [key: Key]: Value }ってinterchangeableな気がするんですが、
どっちかにしかできないことがあったりするんですか?
173(1): 2022/08/26(金)08:07 ID:cPJ/q77Z(1) AAS
mapped の方が柔軟
type X = { age: number, name: string }
これは Record では定義できないだろう
174(1): 2022/08/26(金)08:46 ID:yW+yR6PJ(1/2) AAS
Recordはキーがいくつかの既知の値のみに限られる場合に使う
{ [key: Key]: Value }だとキーが何でも入っちゃうでしょ
175: 174 2022/08/26(金)10:07 ID:yW+yR6PJ(2/2) AAS
限られるというより、必ず既知のキーを持っていることが保証されるというべきか
record.knownKey のような既知のキーによるアクセスがタイプセーフになり、コード補完も効く
176: 2022/08/26(金)10:18 ID:XmC41P2C(1) AAS
微妙にインデックス型とmapped typeがごっちゃになってて話をややこしくしてる気がする
177: 2022/08/26(金)22:54 ID:wGXHgoK/(1) AAS
>>173
それはただのオブジェクト型だと思うが
178(1): .NET MAUI HighScool 2022/11/03(木)11:06 ID:P57hKE9o(1/2) AAS
もしかしてTypeScriptってC#で良いのでは?
静的型付け言語だしオブジェクト指向だし作った人も一緒
179: 2022/11/03(木)11:18 ID:/OhXuECX(1) AAS
C#でいいならわざわざ同じ人が新言語作らないだろ
ヘルスバーグはMS内では神みたいな扱いらしいから、自分で意味ないと思ってる仕事なんかやらないよ
180(1): 2022/11/03(木)11:27 ID:BN1z7WMM(1) AAS
TypeScriptが解決してる問題をC#が全て解決出来るか考えてみれば?
181: .NET MAUI HighScool 2022/11/03(木)11:38 ID:P57hKE9o(2/2) AAS
>>180
できてるじゃん
182(1): 2022/11/03(木)12:08 ID:S9tMl46F(1/2) AAS
or型というのかunion型というのか忘れたけど、C#にはなくない?
type a = b | c
(C#にもこの機能欲しい)
183(1): 2022/11/03(木)12:23 ID:d31vVPfb(1/4) AAS
JavaScriptに静的型付けの恩恵を与えるために作られたのがTypeScript
C#でそれは出来ないでしょ
184: .NET MAUI HighScool 2022/11/03(木)12:26 ID:Kj7ywx2W(1/2) AAS
>>183
C#が静的型付けじゃん
185(1): 2022/11/03(木)12:29 ID:d31vVPfb(2/4) AAS
C#ではJavaScriptに静的型付けの恩恵を与えられないでしょ
186(1): .NET MAUI HighScool 2022/11/03(木)12:39 ID:Kj7ywx2W(2/2) AAS
>>185
なんで?
187(1): 2022/11/03(木)12:47 ID:d31vVPfb(3/4) AAS
>>186
君はC#がJavaScriptに静的型付けの恩恵を与えられると思ってるの?
188: 2022/11/03(木)12:57 ID:t+iDkaHi(1) AAS
>>182
これについてはTypeScriptが便利というよりは、JSのやり方に合わせるために必要となっているものだと思う
C#では型が条件によってコロコロ変わるような設計は普通しないから、nullabilityさえ指定できれば多くの場合十分
189(1): .NET MAUI HighScool 2022/11/03(木)13:04 ID:fiCeisHS(1) AAS
>>187
いや別にJavaScript使う必要なくね?
190: 2022/11/03(木)13:12 ID:d31vVPfb(4/4) AAS
>>189
それは論点のすり替えでしょ
191(1): 2022/11/03(木)14:21 ID:M3w0A0V3(1/2) AAS
代数的データ型は静的型付け言語にもあるよ。
最近のC#でも出来るけど記述量が多い。F#なら比較的楽に書けるけど。
192(1): 2022/11/03(木)15:50 ID:BAhN8xRm(1/2) AAS
typescriptが実行時型安全まで保証してくれたらもう他の言語いらんのよな
REST APIというかJSONとの相性もマックスバリューだし
世にはびこっている型なし糞言語を全て地獄に葬り去ってほしい
193(1): 2022/11/03(木)16:11 ID:cSIPlVD9(1) AAS
>>191
union typesは静的型において一般的な直和型とはかなり違ってて癖が強い
値が型持ってないからね
194: 2022/11/03(木)16:27 ID:M3w0A0V3(2/2) AAS
>>193
まあそれはそうか。型ガードベースだもんね。
別に型が一致してなかったとしてもメンバさえ合ってれば雑代入しても問題ないし。
195(1): 2022/11/03(木)18:23 ID:zVDUtzQU(1/3) AAS
>>192
型をバリデーションライブラリから生成すると捗るよ
196(1): 2022/11/03(木)20:49 ID:BAhN8xRm(2/2) AAS
>>195
おっ zodmanか?
197(1): 2022/11/03(木)20:56 ID:tn2ZhR3p(1/3) AAS
interface/classからjsonschemaを生成して、それを型ガード関数で使うってのが鉄板。
198: 2022/11/03(木)21:05 ID:zVDUtzQU(2/3) AAS
>>196
すまねぇsuperstructなんだ。すまねぇ。
>>197
AJVはコードサイズデカくね?
199(1): 2022/11/03(木)21:36 ID:tn2ZhR3p(2/3) AAS
コードサイズは気にしたことがないがスキーマ手書きは面倒臭いからやだなあ。
200: 2022/11/03(木)22:05 ID:S9tMl46F(2/2) AAS
RestAPIの型チェックはio-tsっていうライブラリつかってバリデーションしてるな。
実行時コストがあるけど、自分は業務アプリがメインなんで変な結果で次に進まない方が大事。
201: 2022/11/03(木)22:38 ID:zVDUtzQU(3/3) AAS
>>199
ZodとかSuperstructとかはtypeで型書くのとほぼ同じくらいの手間でバリデーションと型が生成されるからすげー楽だよ。
202: 2022/11/03(木)22:52 ID:tn2ZhR3p(3/3) AAS
うーん、俺はやっぱりTypescriptで書いた型そのまま使える方が楽だわ。
203: 2022/11/04(金)15:37 ID:NHN4pq/h(1) AAS
HighScool君は納得して帰ったのか
204: 2022/11/04(金)23:24 ID:/YFZG+0u(1) AAS
superstruct と zod ならどっちがええのんか?
205: .NET MAUI HighSchool 2022/12/16(金)16:55 ID:3qj0lL1U(1/2) AAS
C#だとvar型でも何ら問題無いと思われてるのにTypeScriptのanyはなんでTwitterでネタにされるんでしょうか?
私もあまりvar型使いませんが公式とかvar型使いまくってるしTypeScriptでany使っても何ら問題なさそうなのですが…
206(1): 2022/12/16(金)17:30 ID:p0Ky0qXF(1) AAS
コーディング時にvarは右辺で型が決まるけどanyは決まらないからかな
207: .NET MAUI HighSchool 2022/12/16(金)18:26 ID:3qj0lL1U(2/2) AAS
>>206
決まらないんですか?
ではvar型ではなくdynamic型と言うことなのですかね
208(1): 2022/12/16(金)21:33 ID:AqSpfMIV(1) AAS
そもそもvarは正確には型じゃないだろ
209: 2022/12/16(金)21:58 ID:V2l7/OO4(1) AAS
var型はないな
型の堅牢性などを享受するためにTypeScriptを使用しているはずなのに、anyを持ち出せばそれが途端に失われるから絶対に使わない方がいい
そして確かにanyはdynamicに近いものと考えて良い
210(1): 2022/12/16(金)22:10 ID:Hm0gKYO4(1) AAS
TypeScriptに対する理解が浅いのはともかくC#の理解もそんな程度だったのかこのコテ
211(1): .NET MAUI HighSchool 2022/12/17(土)00:18 ID:WFRGIGZB(1/8) AAS
>>208
型推論型だろ
>>210
何いってんだこいつ?
212(2): .NET MAUI HighSchool 2022/12/17(土)00:22 ID:WFRGIGZB(2/8) AAS
dynamic型は次の値を入れたらその型に変わる
例えば
dynamic x="おはよう"
dynamic x=123
でも大丈夫なわけ
anyは型の再代入ができないって見たけど?これdynamic型なの?
213(1): 2022/12/17(土)00:38 ID:1fKT+2Wj(1) AAS
>>178程度の理解のヤツに何を説明しても無駄よ
214: 2022/12/17(土)00:50 ID:/cYfBcZ5(1/2) AAS
>>212
流石にこれは触っちゃいけないレベル
215: 2022/12/17(土)00:55 ID:Q7rx/k0e(1/2) AAS
anyはまさにJavaScriptの元々の変数の扱い様そのもの。
216: .NET MAUI HighSchool 2022/12/17(土)01:46 ID:WFRGIGZB(3/8) AAS
>>213
TypeScriptはC#以下だったってわけか
理解
217: 2022/12/17(土)01:54 ID:Q7rx/k0e(2/2) AAS
目的が違うんだよ。C#ではTypeScriptのようなことは出来ない。
良い意味でも悪い意味でもJavaScriptのスーパーセットかつトランスパイラである必要があるんだから。
ただTypeScriptが将来C#でやってることを概ね肩代わりすることは可能だったりはするんだけどね.netライブラリをそのまま動かすように改変していくことも障害は少ない。
218: 2022/12/17(土)02:13 ID:dtBkzR03(1) AAS
そいつにかまうなよ
あちこちの言語やフレームワークスレに乗り込んでは意味不明な喧嘩売って
C#マンセーMAUIマンセーしてるだけの荒らし
219(2): 2022/12/17(土)03:00 ID:7f5jCiop(1) AAS
再代入と型は関係ないだろ
見た感じC#も満足に使えてないじゃん
220: .NET MAUI HighSchool 2022/12/17(土)04:20 ID:WFRGIGZB(4/8) AAS
>>219
どこが?
dynamic型知ってる?
221(1): 2022/12/17(土)08:49 ID:J7I3yK2m(1) AAS
>>211
まぁ初心者なら便宜的に型だって覚えときゃいいよ
>>212
型の再代入って何?
値の再代入とは違うの?
222(1): .NET MAUI HighSchool 2022/12/17(土)11:38 ID:WFRGIGZB(5/8) AAS
>>221
値は型があってたら普通は再代入はできる
ただ型があってなかったらできない
dynamic型は型があってなくても再代入できる
223(1): 2022/12/17(土)12:01 ID:d07Wp+U/(1/2) AAS
>>222
それをC#では型の再代入って呼ぶの?
TypeScriptでは変数をletで宣言すれば値を再代入できる
変数がany型ならどんな型の値でも代入できる
変数をconstで宣言すれば型が同じであろうと再代入できない
>>219の言ってるのはそういうこと
224: .NET MAUI HighSchool 2022/12/17(土)12:25 ID:EKmrQGNL(1/2) AAS
>>223
そういう決まった名前無いけどdynamic型は型を変えれるからそう言ってる
225(1): .NET MAUI HighSchool 2022/12/17(土)12:25 ID:EKmrQGNL(2/2) AAS
つまりletがvarでanyがdynamicってことか
226(1): 2022/12/17(土)12:32 ID:AZCBrKeq(1/2) AAS
ここでもバカ晒してるのかよw
227: .NET MAUI HighSchool 2022/12/17(土)12:38 ID:WFRGIGZB(6/8) AAS
>>226
何いってんだこいつ?
228(1): 2022/12/17(土)12:56 ID:d07Wp+U/(2/2) AAS
>>225
説明の仕方が悪かったか
C#の
dynamic x = "abc";
x = 123; //OK
に相当するのは
let x:any = "abc";
省9
229: .NET MAUI HighSchool 2022/12/17(土)14:07 ID:WFRGIGZB(7/8) AAS
>>228
なるほど理解したサンクス
230: 2022/12/17(土)18:19 ID:EAGB3+7T(1) AAS
なんでぽまいらはC#の話をしているんだ?
231: .NET MAUI HighSchool 2022/12/17(土)18:58 ID:WFRGIGZB(8/8) AAS
anyはネタにされるけどvarはネタにされないなと思ってさ
まぁ勘違いだったんだけどね
232: 2022/12/17(土)19:14 ID:ETb1szGB(1) AAS
なぜanyがネタにされたり忌み嫌われたりするのかはその機能だけ見ても分からんだろうね
言語特有の背景を理解してこそ
外部リンク:qiita.com
233: 2022/12/17(土)20:38 ID:/cYfBcZ5(2/2) AAS
any無しはJSONの扱いが面倒臭過ぎるんだよなあ
必要に応じて型のランタイムチェックを入れてキャストできる機能さえあれば格段に便利になるんだが
234: 2022/12/17(土)20:55 ID:AZCBrKeq(2/2) AAS
ユーザー定義型ガードで足りると思うが
235: 2022/12/21(水)14:23 ID:FWjNfdlT(1) AAS
JSONだろうがanyを許すな。Zodとか使うのだ
236: 2023/01/03(火)23:03 ID:6VbKu+1R(1) AAS
pythonを書いていると型縛りが馬鹿らしくなる
237: 2023/01/03(火)23:51 ID:FIKRmyvH(1) AAS
JavaScriptを書いていると型縛りが馬鹿らしくなる
みんながそう思ってたらTypeScriptは生まれてこなかっただろうね
238: 2023/01/04(水)00:03 ID:eKtKRLft(1) AAS
型なんて要らねーとか言ってるのは、ほぼ1人でコーディングしてる奴
まぁ、実際1人でなら要らないかも知れない
これが複数人でコーディングする事になると、他人が実装した関数にどんなデータを渡していいか全然分からない
その為にTypeScriptがある
239(1): 2023/01/04(水)00:08 ID:PCFpglko(1/2) AAS
型がない方が縛りプレイだろ
240(1): 2023/01/04(水)00:44 ID:B1scSs4x(1) AAS
JavaScriptは引数の数すらチェックされない上に暗黙の変換にundefined/null/NaNと昔はブロックスコープもなくてバグの温床てんこ盛りだったからやろ
intとかStringとかのベーシックな型を書きまくつてるコードを見ると欠陥言語だなと思う
241: 2023/01/04(水)09:28 ID:77WW46pZ(1) AAS
>>239
縛り方を間違うと死ぬからな
242: 2023/01/04(水)10:15 ID:y9fxcgcU(1) AAS
Flow「…」
243: 2023/01/04(水)11:23 ID:PU4coe7B(1/2) AAS
パラメタ名・変数名で型がわかるようにしとけば大概は済む
引数の個数をテキトウに呼ぶ奴がいたら、それはそんな作り方する方がおかしい
244: 2023/01/04(水)11:53 ID:+W5BVHVt(1) AAS
そういう開発者にのしかかる煩わしさを軽減するのが型の役目だろうに
245: 2023/01/04(水)16:13 ID:s5vEki4C(1) AAS
コーディングルールの運用で型限定するのも
コンパイラにまかせて型限定するのも
少なくとも js に限って言えば前者の方が手間は少ない
246: 2023/01/04(水)16:35 ID:WgdCy7ph(1/2) AAS
本気で言ってるのか・・・?
上下前次1-新書関写板覧索設栞歴
あと 150 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.018s