[表示 : 全て 最新50 1-99 101- 201- 301- 2ch.scのread.cgiへ]
Update time : 11/15 23:17 / Filesize : 130 KB / Number-of Response : 398
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

TypeScript part4



1 名前:デフォルトの名無しさん [2021/12/30(木) 22:57:02.78 ID:XEA11GKy.net]
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/

159 名前:デフォルトの名無しさん mailto:sage [2022/04/29(金) 08:07:44.25 ID:nnpkzAOE.net]
次世代言語スレから何か流れてきてるだろ

160 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 02:13:26.17 ID:u1byxZ8b.net]
C++を使うにはCの知識も当然必要だがな

161 名前:デフォルトの名無しさん mailto:sage [2022/04/30(土) 11:22:16.98 ID:Jfyr/cmt.net]
オーバーロードがもうちょいマシだったらなと思う

162 名前:デフォルトの名無しさん mailto:sage [2022/05/10(火) 11:41:45.53 ID:fIyMb/gO.net]
     ,―彡 ⌒ ミ―、
    〈 〈| ´ん` |〉 〉
    \ ヽ _ / /
     /      /みんなで
     /      /ホモセックス

163 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 21:44:48.53 ID:URC3D+jY.net]
バカが書いたTypeScriptってマジで糞だな
って思ったけどJavaScriptだったらもっと糞になってたんだよなって思って心の平静保ってる

164 名前:デフォルトの名無しさん mailto:sage [2022/05/30(月) 21:47:51.98 ID:arvcbcVn.net]
それ言ったら賢い奴が書いたらCでも何も問題ないんだが
言語が縛ってるのは所詮馬鹿対策でしかない

165 名前:デフォルトの名無しさん [2022/06/29(水) 20:00:27.28 ID:NKfPTkof.net]
質問です。

type t = (a: string) => string;
const f: t = (a) => false;
console.log(f('x'));

で false のところで、
Type 'boolean' is not assignable to type 'string'.ts(2322)
になりますが、
・type t = ... を書き換えてはいけない
・const f の実装を
 const f: t = (a) => <string><unknown>false;
 のように書き換えてはいけない
・// @ts-ignore
 を使ってはいけない。
という縛りで、例えばですが、
type t = (a: string) => string;
overwrite type t = (a: string) => string | boolean;
const f: t = (a) => false;
console.log(f('x'));
のように同名の型のまま戻り値の定義を書き換えるということはできるのでしょうか?
(overwrite type...は、そんな文法は無く、仮想の方法です。)

また、型定義と型指定部分だけ書き換え不可としたら、普通は、
<string><unknown>false;
// @ts-ignore
どちらで乗り切るのでしょうか?

166 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 01:29:29.02 ID:9mtgPMTA.net]
>>165
普通はfの型をtにしないと思うのだが、どういう意図があるの?

167 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 07:51:24.33 ID:dQhuKSOV.net]
>>165
>のように同名の型のまま戻り値の定義を書き換えるということはできるのでしょうか?
型定義を後付けで変更できたらいろんな前提がひっくり返る気が
そんなことが必要な状況が想像できないけどコードの臭いがプンプンする



168 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 09:29:37.43 ID:Rcw/gVlt.net]
ライブラリの型が間違ってるとか?
質問あるあるだが、抽象化も大事だが、具体的な状況も書き添えると回答してもらいやすくなると思うよ
そもそもの質問がずれてるとかもあるからね

169 名前:デフォルトの名無しさん [2022/06/30(木) 11:29:36.59 ID:Argu0lpR.net]
>>165
です。ありがとうございます。
実際のケースでお話しします。
・ライブラリの型を利用している。
・ライブラリの実装をそのまま真似ている。(実装は変えられる。)
・anyは使わない方針。
の状況です。
【型定義(サードパーティ)】
declare const visit: { <V extends Node>(tree: Node,test: Test<V> | Array<Test<any>>,visitor: visit.Visitor<V>,reverse?: boolean): void }
export = visit
declare namespace unistUtilIs {
type TestFunction<T extends Node> = (node: unknown,index?: number,parent?: Parent) => node is T
type Test<T extends Node> = TestFunction<T> | null | undefined }
【実装(大部分省略)】
import visit from 'unist-util-visit';
import { Node, Data } from 'unist';
 function visitX(node: any): void {
  if (!node.type) return;
 }
 return function transformer(tree): void {
  visit(tree, (node: Node<Data>) => node.type === 'xxx', visitX);
 };
ここで、function visitX(node: any) の Unexpected any. を消すのに難儀しています。
function visitX(node: Node<Data>): void {
にすると、
visit( の部分で
No overload matches this call.
Overload 1 of 2, '(tree: Node<Data>, test: any[] | Test<Node<Data>>, visitor: Visitor<Node<Data>>, reverse?: boolean | undefined): void', gave the following error.
...
と怒られます。極端な話、サードパーティの定義の方をいじらないと解決しないかもと思った次第です。

170 名前:デフォルトの名無しさん mailto:sage [2022/06/30(木) 12:31:53.04 ID:Rcw/gVlt.net]
5chだと読みづらいからts playgroundなりcode sandboxなりに書いて欲しい

171 名前:デフォルトの名無しさん [2022/06/30(木) 12:53:38 ID:Argu0lpR.net]
>>165 です。
すみません。かなり省略して、改行も削除しました。
伝えたかったのは、以下です。
https://tsplay.dev/WJyrDm

172 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 00:55:54.58 ID:z3bi9+6P.net]
Recordとmapped typesの使い分け方が分かりません
Record<Key, Value>と{ [key: Key]: Value }ってinterchangeableな気がするんですが、
どっちかにしかできないことがあったりするんですか?

173 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 08:07:49.83 ID:cPJ/q77Z.net]
mapped の方が柔軟

type X = { age: number, name: string }

これは Record では定義できないだろう

174 名前:デフォルトの名無しさん mailto:sage [[ここ壊れてます] .net]
Recordはキーがいくつかの既知の値のみに限られる場合に使う
{ [key: Key]: Value }だとキーが何でも入っちゃうでしょ

175 名前:174 mailto:sage [2022/08/26(金) 10:07:43.28 ID:yW+yR6PJ.net]
限られるというより、必ず既知のキーを持っていることが保証されるというべきか
record.knownKey のような既知のキーによるアクセスがタイプセーフになり、コード補完も効く

176 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 10:18:44.77 ID:XmC41P2C.net]
微妙にインデックス型とmapped typeがごっちゃになってて話をややこしくしてる気がする

177 名前:デフォルトの名無しさん mailto:sage [2022/08/26(金) 22:54:52.76 ID:wGXHgoK/.net]
>>173
それはただのオブジェクト型だと思うが



178 名前:.NET MAUI HighScool [2022/11/03(木) 11:06:25.02 ID:P57hKE9o.net]
もしかしてTypeScriptってC#で良いのでは?
静的型付け言語だしオブジェクト指向だし作った人も一緒

179 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:18:14.22 ID:/OhXuECX.net]
C#でいいならわざわざ同じ人が新言語作らないだろ
ヘルスバーグはMS内では神みたいな扱いらしいから、自分で意味ないと思ってる仕事なんかやらないよ

180 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 11:27:45.04 ID:BN1z7WMM.net]
TypeScriptが解決してる問題をC#が全て解決出来るか考えてみれば?

181 名前:.NET MAUI HighScool [2022/11/03(木) 11:38:56.77 ID:P57hKE9o.net]
>>180
できてるじゃん

182 名前:デフォルトの名無しさん [2022/11/03(木) 12:08:35.27 ID:S9tMl46F.net]
or型というのかunion型というのか忘れたけど、C#にはなくない?
type a = b | c

(C#にもこの機能欲しい)

183 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:23:54.28 ID:d31vVPfb.net]
JavaScriptに静的型付けの恩恵を与えるために作られたのがTypeScript
C#でそれは出来ないでしょ

184 名前:.NET MAUI HighScool [2022/11/03(木) 12:26:39.11 ID:Kj7ywx2W.net]
>>183
C#が静的型付けじゃん

185 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:29:42.91 ID:d31vVPfb.net]
C#ではJavaScriptに静的型付けの恩恵を与えられないでしょ

186 名前:.NET MAUI HighScool [2022/11/03(木) 12:39:42.87 ID:Kj7ywx2W.net]
>>185
なんで?

187 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:47:16.05 ID:d31vVPfb.net]
>>186
君はC#がJavaScriptに静的型付けの恩恵を与えられると思ってるの?



188 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 12:57:24.44 ID:t+iDkaHi.net]
>>182
これについてはTypeScriptが便利というよりは、JSのやり方に合わせるために必要となっているものだと思う
C#では型が条件によってコロコロ変わるような設計は普通しないから、nullabilityさえ指定できれば多くの場合十分

189 名前:.NET MAUI HighScool [2022/11/03(木) 13:04:33.62 ID:fiCeisHS.net]
>>187
いや別にJavaScript使う必要なくね?

190 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 13:12:15.66 ID:d31vVPfb.net]
>>189
それは論点のすり替えでしょ

191 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 14:21:47.63 ID:M3w0A0V3.net]
代数的データ型は静的型付け言語にもあるよ。
最近のC#でも出来るけど記述量が多い。F#なら比較的楽に書けるけど。

192 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 15:50:32.38 ID:BAhN8xRm.net]
typescriptが実行時型安全まで保証してくれたらもう他の言語いらんのよな
REST APIというかJSONとの相性もマックスバリューだし
世にはびこっている型なし糞言語を全て地獄に葬り去ってほしい

193 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:11:11.85 ID:cSIPlVD9.net]
>>191
union typesは静的型において一般的な直和型とはかなり違ってて癖が強い
値が型持ってないからね

194 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 16:27:43.63 ID:M3w0A0V3.net]
>>193
まあそれはそうか。型ガードベースだもんね。
別に型が一致してなかったとしてもメンバさえ合ってれば雑代入しても問題ないし。

195 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 18:23:11.89 ID:zVDUtzQU.net]
>>192
型をバリデーションライブラリから生成すると捗るよ

196 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 20:49:50.25 ID:BAhN8xRm.net]
>>195
おっ zodmanか?

197 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 20:56:17.04 ID:tn2ZhR3p.net]
interface/classからjsonschemaを生成して、それを型ガード関数で使うってのが鉄板。



198 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 21:05:34.21 ID:zVDUtzQU.net]
>>196
すまねぇsuperstructなんだ。すまねぇ。

>>197
AJVはコードサイズデカくね?

199 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 21:36:19.22 ID:tn2ZhR3p.net]
コードサイズは気にしたことがないがスキーマ手書きは面倒臭いからやだなあ。

200 名前:デフォルトの名無しさん [2022/11/03(木) 22:05:24.52 ID:S9tMl46F.net]
RestAPIの型チェックはio-tsっていうライブラリつかってバリデーションしてるな。
実行時コストがあるけど、自分は業務アプリがメインなんで変な結果で次に進まない方が大事。

201 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 22:38:04.12 ID:zVDUtzQU.net]
>>199
ZodとかSuperstructとかはtypeで型書くのとほぼ同じくらいの手間でバリデーションと型が生成されるからすげー楽だよ。

202 名前:デフォルトの名無しさん mailto:sage [2022/11/03(木) 22:52:51.54 ID:tn2ZhR3p.net]
うーん、俺はやっぱりTypescriptで書いた型そのまま使える方が楽だわ。

203 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 15:37:16.21 ID:NHN4pq/h.net]
HighScool君は納得して帰ったのか

204 名前:デフォルトの名無しさん mailto:sage [2022/11/04(金) 23:24:08.39 ID:/YFZG+0u.net]
superstruct と zod ならどっちがええのんか?

205 名前:.NET MAUI HighSchool [2022/12/16(金) 16:55:41.78 ID:3qj0lL1U.net]
C#だとvar型でも何ら問題無いと思われてるのにTypeScriptのanyはなんでTwitterでネタにされるんでしょうか?
私もあまりvar型使いませんが公式とかvar型使いまくってるしTypeScriptでany使っても何ら問題なさそうなのですが…

206 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 17:30:57.27 ID:p0Ky0qXF.net]
コーディング時にvarは右辺で型が決まるけどanyは決まらないからかな

207 名前:.NET MAUI HighSchool [2022/12/16(金) 18:26:46.45 ID:3qj0lL1U.net]
>>206
決まらないんですか?
ではvar型ではなくdynamic型と言うことなのですかね



208 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 21:33:55.14 ID:AqSpfMIV.net]
そもそもvarは正確には型じゃないだろ

209 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 21:58:06.83 ID:V2l7/OO4.net]
var型はないな

型の堅牢性などを享受するためにTypeScriptを使用しているはずなのに、anyを持ち出せばそれが途端に失われるから絶対に使わない方がいい
そして確かにanyはdynamicに近いものと考えて良い

210 名前:デフォルトの名無しさん mailto:sage [2022/12/16(金) 22:10:24.90 ID:Hm0gKYO4.net]
TypeScriptに対する理解が浅いのはともかくC#の理解もそんな程度だったのかこのコテ

211 名前:.NET MAUI HighSchool [2022/12/17(土) 00:18:30.36 ID:WFRGIGZB.net]
>>208
型推論型だろ
>>210
何いってんだこいつ?

212 名前:.NET MAUI HighSchool [2022/12/17(土) 00:22:25.11 ID:WFRGIGZB.net]
dynamic型は次の値を入れたらその型に変わる
例えば
dynamic x="おはよう"
dynamic x=123
でも大丈夫なわけ
anyは型の再代入ができないって見たけど?これdynamic型なの?

213 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 00:38:58.67 ID:1fKT+2Wj.net]
>>178程度の理解のヤツに何を説明しても無駄よ

214 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 00:50:14.95 ID:/cYfBcZ5.net]
>>212
流石にこれは触っちゃいけないレベル

215 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 00:55:05.65 ID:Q7rx/k0e.net]
anyはまさにJavaScriptの元々の変数の扱い様そのもの。

216 名前:.NET MAUI HighSchool [2022/12/17(土) 01:46:39.51 ID:WFRGIGZB.net]
>>213
TypeScriptはC#以下だったってわけか
理解

217 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 01:54:57.82 ID:Q7rx/k0e.net]
目的が違うんだよ。C#ではTypeScriptのようなことは出来ない。
良い意味でも悪い意味でもJavaScriptのスーパーセットかつトランスパイラである必要があるんだから。
ただTypeScriptが将来C#でやってることを概ね肩代わりすることは可能だったりはするんだけどね.netライブラリをそのまま動かすように改変していくことも障害は少ない。



218 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 02:13:01.40 ID:dtBkzR03.net]
そいつにかまうなよ
あちこちの言語やフレームワークスレに乗り込んでは意味不明な喧嘩売って
C#マンセーMAUIマンセーしてるだけの荒らし

219 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 03:00:17.54 ID:7f5jCiop.net]
再代入と型は関係ないだろ
見た感じC#も満足に使えてないじゃん

220 名前:.NET MAUI HighSchool [2022/12/17(土) 04:20:14.04 ID:WFRGIGZB.net]
>>219
どこが?
dynamic型知ってる?

221 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 08:49:17.76 ID:J7I3yK2m.net]
>>211
まぁ初心者なら便宜的に型だって覚えときゃいいよ

>>212
型の再代入って何?
値の再代入とは違うの?

222 名前:.NET MAUI HighSchool [2022/12/17(土) 11:38:05.95 ID:WFRGIGZB.net]
>>221
値は型があってたら普通は再代入はできる
ただ型があってなかったらできない
dynamic型は型があってなくても再代入できる

223 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 12:01:06.61 ID:d07Wp+U/.net]
>>222
それをC#では型の再代入って呼ぶの?

TypeScriptでは変数をletで宣言すれば値を再代入できる
変数がany型ならどんな型の値でも代入できる
変数をconstで宣言すれば型が同じであろうと再代入できない
>>219の言ってるのはそういうこと

224 名前:.NET MAUI HighSchool [2022/12/17(土) 12:25:09.54 ID:EKmrQGNL.net]
>>223
そういう決まった名前無いけどdynamic型は型を変えれるからそう言ってる

225 名前:.NET MAUI HighSchool [2022/12/17(土) 12:25:55.57 ID:EKmrQGNL.net]
つまりletがvarでanyがdynamicってことか

226 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 12:32:09.45 ID:AZCBrKeq.net]
ここでもバカ晒してるのかよw

227 名前:.NET MAUI HighSchool [2022/12/17(土) 12:38:11.73 ID:WFRGIGZB.net]
>>226
何いってんだこいつ?



228 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 12:56:35.19 ID:d07Wp+U/.net]
>>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.19 ID:WFRGIGZB.net]
>>228
なるほど理解したサンクス

230 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 18:19:24.77 ID:EAGB3+7T.net]
なんでぽまいらはC#の話をしているんだ?

231 名前:.NET MAUI HighSchool [2022/12/17(土) 18:58:14.82 ID:WFRGIGZB.net]
anyはネタにされるけどvarはネタにされないなと思ってさ
まぁ勘違いだったんだけどね

232 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 19:14:45.81 ID:ETb1szGB.net]
なぜanyがネタにされたり忌み嫌われたりするのかはその機能だけ見ても分からんだろうね
言語特有の背景を理解してこそ
https://qiita.com/uhyo/items/aae57ba0734e36ee846a

233 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 20:38:09.95 ID:/cYfBcZ5.net]
any無しはJSONの扱いが面倒臭過ぎるんだよなあ
必要に応じて型のランタイムチェックを入れてキャストできる機能さえあれば格段に便利になるんだが

234 名前:デフォルトの名無しさん mailto:sage [2022/12/17(土) 20:55:50.21 ID:AZCBrKeq.net]
ユーザー定義型ガードで足りると思うが

235 名前:デフォルトの名無しさん mailto:sage [2022/12/21(水) 14:23:05.41 ID:FWjNfdlT.net]
JSONだろうがanyを許すな。Zodとか使うのだ

236 名前:デフォルトの名無しさん mailto:sage [2022/12/26(月) 23:40:24.66 ID:x7llhSa6Z]
第一引数の型によって戻り値の型を決定できる書き方ないですか?

このようなストアがあって
type Store = {
  items: Items
  players: Player[]
}

このようなゲッターを定義して
load(key: keyof Store): Store[keyof Store] {
  const store = this.getStore()
  return store[key]
}

このように利用しようとしたらPlayery[]がItemsではないと言われてしまい。 (ですよね)
const items: Items = load('items')

ジェネリクスにしたところで<>に指定できず。

237 名前:デフォルトの名無しさん [2023/01/03(火) 23:03:14.80 ID:6VbKu+1R.net]
pythonを書いていると型縛りが馬鹿らしくなる



238 名前:デフォルトの名無しさん mailto:sage [2023/01/03(火) 23:51:28.97 ID:FIKRmyvH.net]
JavaScriptを書いていると型縛りが馬鹿らしくなる
みんながそう思ってたらTypeScriptは生まれてこなかっただろうね

239 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 00:03:33.25 ID:eKtKRLft.net]
型なんて要らねーとか言ってるのは、ほぼ1人でコーディングしてる奴
まぁ、実際1人でなら要らないかも知れない
これが複数人でコーディングする事になると、他人が実装した関数にどんなデータを渡していいか全然分からない
その為にTypeScriptがある

240 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 00:08:02.09 ID:PCFpglko.net]
型がない方が縛りプレイだろ

241 名前:デフォルトの名無しさん [2023/01/04(水) 00:44:19.33 ID:B1scSs4x.net]
JavaScriptは引数の数すらチェックされない上に暗黙の変換にundefined/null/NaNと昔はブロックスコープもなくてバグの温床てんこ盛りだったからやろ

intとかStringとかのベーシックな型を書きまくつてるコードを見ると欠陥言語だなと思う

242 名前:デフォルトの名無しさん [2023/01/04(水) 09:28:28.37 ID:77WW46pZ.net]
>>240
縛り方を間違うと死ぬからな

243 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 10:15:30.84 ID:y9fxcgcU.net]
Flow「…」

244 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 11:23:06.77 ID:PU4coe7B.net]
パラメタ名・変数名で型がわかるようにしとけば大概は済む
引数の個数をテキトウに呼ぶ奴がいたら、それはそんな作り方する方がおかしい

245 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 11:53:32.34 ID:+W5BVHVt.net]
そういう開発者にのしかかる煩わしさを軽減するのが型の役目だろうに

246 名前:デフォルトの名無しさん [2023/01/04(水) 16:13:02.47 ID:s5vEki4C.net]
コーディングルールの運用で型限定するのも
コンパイラにまかせて型限定するのも
少なくとも js に限って言えば前者の方が手間は少ない

247 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 16:35:42.97 ID:WgdCy7ph.net]
本気で言ってるのか・・・?



248 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 16:38:46.50 ID:oLi3mo91.net]
>パラメタ名・変数名で型がわかるようにしとけば大概は済む

よく事故るのは受け渡すオブジェクトのメンバーの有無だったりするけどそれには無力だな。

249 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 16:48:19.89 ID:PU4coe7B.net]
大概、おおむねって話よ
よほど便利だろうから、こういう言語が生れたのだろうし全否定するわけではない
あと、処理系が変数の型を把握できても、しかるべき名前でないと、開発者に分かりにくい場合がある
自作でもこれなんだっけ?紛らわしいなって、結局名前弄ったり、名前って大事

250 名前:デフォルトの名無しさん [2023/01/04(水) 16:56:26.80 ID:+smwzq4n.net]
型付けはあった方が良いけど、肝心の成果物がしょーもないことは多々あるな
最近まで参画していたアプリはすげー健康なブスだった

251 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 17:01:25.31 ID:WgdCy7ph.net]
開発途中で型の変更が必要になったとき安全に漏れなく修正できるメリットとかは無視できないんだけど
今までそういう経験がなかったんだろうか

252 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 17:46:37.74 ID:JvBm8lal.net]
そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
それよりも代入により生じる依存関係を静的に追跡可能であることが重要で、その点では型があることで飛躍的に静的解析の精度が上がる
ただ、そのためには静的解析しやすい作りになっていることが大前提だ
動的型畑の人って概してオブジェクトと連想配列の区別が曖昧で、静的型に馴染んだ人からすると信じられないような型安全もクソもないコード書くからな
それを根本的に改めないなら型なんて大して役に立たん

253 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 18:22:26.69 ID:thANRos2.net]
>そういうのはどのみち影響しそうな箇所を全部見て確認しなきゃいけないから、値に型があることはそれほど重要じゃないと思う
その影響しそうな箇所の把握に型があるのとないのでは大きく正確性や効率に差が出てくるでしょって話

254 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:43:59.04 ID:PCFpglko.net]
まぁRubyやPHP出身の低能にそもそも型書かせるのが難しいという意見には同意
根本的に教養・学が足りないから、どうしようもない
もはや言語仕様で救えないレベルの話である

255 名前:デフォルトの名無しさん mailto:sage [2023/01/04(水) 22:52:50.06 ID:492NQUrQ.net]
動的型畑の奴が一概にバカとは思わないが、オブジェクトの全プロパティ舐めて値を書き換えたりするコードが突如出現したりして面食らう
根本的に思考回路が我々とは違うのだなと感じる

256 名前:デフォルトの名無しさん [2023/01/04(水) 23:21:22.18 ID:+smwzq4n.net]
クスクス

257 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 10:41:34.55 ID:Cbg+aaE9.net]
>241
>暗黙の変換

これが諸悪の根源



258 名前:デフォルトの名無しさん [2023/01/05(木) 21:34:07.80 ID:OE/QT1xu.net]
JavaScriptは信用できない、JavaScriptは危険。

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

JavaScriptそのものは書くものではなくて、使うものに変化した。

259 名前:デフォルトの名無しさん mailto:sage [2023/01/05(木) 22:57:13.13 ID:ySLiYJwl.net]
JSを半端に知ってるやつこそそう言うけど、地雷がたくさん埋まってる以外は悪い言語じゃない。TypeScriptも今となっては薄いラッパーに過ぎないし






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<130KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef