19/06/26 16:21:39.07 b+WM9Si2.net
確かにCとかC++は基礎的なソフトに使われるから
僅かなバグも絶対に許されないとこありそう
それ以外にポインタ使ってるからってのもあるだろうけど
271:デフォルトの名無しさん
19/06/29 10:08:56.36 /kbU3u2K.net
>>266
動画の新しいエンコーダ作るとか、プログラムじゃなくて数学のレベルを求められる仕事は置いといて、
webならフロントの方がよっぽど複雑じゃない?
バックなんて同期処理でお決まりのレールに乗ってダラダラ書いてくだけだし。
複雑でパフォーマンスが要求されるpwaとか、typescript無かったら絶対に完成する気しないわ。
カオス過ぎる
272:デフォルトの名無しさん
19/06/29 10:25:06.32 Kp+ip4R/.net
js/tsだけどダイアログとか出すときに
モードレスにした方がユーザーには使い易いのに
バグが増えそうだからモードレス禁止ってことで
全部モーダルで造らされたことがある
273:デフォルトの名無しさん
19/06/29 19:29:55.34 pedxXkW2.net
型の判定の正しい手順ってどうだっけ?5行目で引っかかってしまう。
function isMyType(o: unknown): o is MyType {
if (typeof o !== 'object') { return false; }
if (!o) { return false; }
if (!('key' in o)) { return false; }
if (!o.key) { return false; } // ts7053
return true;
}
274:デフォルトの名無しさん
19/06/29 23:44:35.08 rJpz/Ysh.net
ひえっ…
typescript使う意味あるのこれ
275:デフォルトの名無しさん
19/06/30 01:10:38.25 7Llu84Qc.net
そりゃTypeScriptだって魔法じゃないんだから。
すごいのは外部から渡された得体の知れない値をこうやって動的に型判定して
それを静的な型の世界に持ち込めるところ。
276:デフォルトの名無しさん
19/06/30 01:36:24.68 y+UHg1Q8.net
ts知らないけど処理系がロード済みの型一覧を取得できないの
277:デフォルトの名無しさん
19/06/30 02:09:58.63 uFOYv7Ak.net
unknownじゃなくてanyでいいでしょ
278:デフォルトの名無しさん
19/07/01 22:30:11.88 VQESBdFl.net
>>270
この返り値、なんていう記法?
というか、なぜこんな書き方が必要なの?
279:デフォルトの名無しさん
19/07/01 23:18:57.13 yt2EFQVJ.net
user defined type guard function でググれ。
280:デフォルトの名無しさん
19/07/02 04:58:55.57 uMGeffjZ.net
>>269
jQuery, jQuery UI のダイアログを使えば?
モーダルが多いような気がする
281:デフォルトの名無しさん
19/07/03 22:40:20.89 HeNg6Q/2.net
>>276
それだけで理解した
なるサンクス
282:デフォルトの名無しさん
19/07/07 08:52:11.33 eO4QC7Eh.net
/* eslint-disable @typescript-eslint/explicit-function-return-type */
const mapDispatchToProps = (dispatch: TodoAsyncDispatch) => {
return {
fetchTodo: (id: TodoId) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
/* eslint-enable */
type ReduxDispatchProps = ReturnType<typeof mapDispatchToProps>
---
これをeslint-disableなしで実装する方法ってないですか?
例えば、↓こんな感じで「any」の部分が「型推論させる型」みたいにできる、とか。
redux-thunkの型付けが難しいお・・・
---
type MDTP = (dispatch: TodoAsyncDispatch) => any
const mapDispatchToProps2: MDTP = (dispatch) => {
return {
fetchTodo: (id: TodoId) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
283:type ReduxDispatchProps2 = ReturnType<typeof mapDispatchToProps2>
284:デフォルトの名無しさん
19/07/07 09:34:19.15 z09Q0v8J.net
その暗黙の推論を禁止するルールなんだから普通に考えたら無いよね。
型付けが難しい場合があるのはわかるけど、eslint-disableじゃだめな理由は?
全体として入れているチェックの例外を設けるなら後からその箇所がわかるように
しておかなきゃ困ると思うが。
285:デフォルトの名無しさん
19/07/07 10:04:05.70 dCt2bUfG.net
ジャネリック
286:デフォルトの名無しさん
19/07/07 10:24:01.49 eO4QC7Eh.net
>>280
型付け自体はそう難しくはないんだが、この2重定義感がだるくて。
mapDispatchToPropsに型ちゃんと書いてそこに集約したいというか。
---
type ReduxDispatchProps = {
fetchTodo: (id: TodoId) => Promise<void>
}
const mapDispatchToProps = (
dispatch: TodoAsyncDispatch
): ReduxDispatchProps => {
return {
fetchTodo: (id) =>
dispatch(todoAsyncRequestActions.fetchTodoRequest({ id })),
}
}
---
> eslint-disableじゃだめな理由
mapDispatchToProps は書く頻度が高いから、あまり eslint-disable を撒き散らしたくない
とはいえ普通の function で explicit-function-return-type を false にしたくない
というお気持ち
やっぱ無理ッスかね
287:デフォルトの名無しさん
19/07/07 10:37:01.72 eO4QC7Eh.net
>>281
どう書けばできそうですか?
288:デフォルトの名無しさん
19/07/07 11:45:51.89 zsCaUS/w.net
{ allowExpressions: true }
289:デフォルトの名無しさん
19/07/07 13:32:44.90 eO4QC7Eh.net
>>284
既にこれで設定してます
---
"@typescript-eslint/explicit-function-return-type": [
"error",
{
allowExpressions: true,
allowTypedFunctionExpressions: true,
},
],
---
290:デフォルトの名無しさん
19/07/10 01:53:27.81 QsYN3Rs6.net
Nest.js使ってサーバサイドもts使ってる人いる?
291:デフォルトの名無しさん
19/07/17 21:56:07.81 c89mzXrS.net
むしろ整合性が求められるサーバーサイドでこそ活躍する
292:デフォルトの名無しさん
19/07/17 23:22:52.24 ySrAQEz0.net
TSerならdenoでない?
293:デフォルトの名無しさん
19/07/17 23:47:06.39 5ruk5Mj4.net
まだ早い
294:デフォルトの名無しさん
19/07/23 23:09:48.66 vuRfx8Ta.net
tslintが年内収束ってことなんでeslint移行を試しているが、まだ微妙に使いづらいな。
295:デフォルトの名無しさん
19/07/24 12:05:38.50 CC3juVRq.net
Svelte 試してるんだが TS にできない……
eslint-config-prettierがほぼ使用不可になるのもしんどい
296:デフォルトの名無しさん
19/07/28 15:31:08.83 o4KFBn8V.net
vs2019に入れるときはどうしたらいいですか?
色々やってて、2017には入ったけど、HelloWorldが正しく動いてくれない。
297:デフォルトの名無しさん
19/07/28 16:16:00.92 9XfU9Gs7.net
悪いことは言わんからVSCodeにしとけ
それにTypeScriptはIDEにインストールするもんじゃなく、npmでインストールするただの1ライブラリだ
298:デフォルトの名無しさん
19/07/28 19:23:20.85 o4KFBn8V.net
検討してみます。
ありがとう。
299:デフォルトの名無しさん
19/07/30 20:33:12.19 +pfbQhET.net
リテラル型からそのリテラルの値を作ることってできないんだっけか。
Record<Foo,boolean>の変数の初期値にReacord<Foo,false>の値が使えたらよかったんだが。
300:デフォルトの名無しさん
19/07/31 01:05:45.62 LQAad41F.net
型情報から実行時インスタンスの値を変更は不可能
301:デフォルトの名無しさん
19/07/31 22:29:00.76 FZL3ewwl.net
仕組み考えりゃ当たり前だよな
302:デフォルトの名無しさん
19/07/31 22:36:31.70 79+NgejT.net
tsはコンパイル後の結果に型情報は含まないというポリシーだけど、
そういう定数を埋め込むことはやろうと思えばできる話だろ。
303:デフォルトの名無しさん
19/08/27 08:04:24.39 qSEEAuKd.net
androidで使えるts用のeditorないかな
トランスパイルとかはメインの環境でやるからコーディングのための入力支援だけでも受けられるようなやつ
304:デフォルトの名無しさん
19/08/28 02:28:02.83 SJji
305:sg2m.net
306:デフォルトの名無しさん
19/08/29 08:30:46.67 jM/zWkNe.net
Announcing TypeScript 3.6
URLリンク(devblogs.microsoft.com)
307:デフォルトの名無しさん
19/09/05 23:20:27.31 VPhKtGaJ.net
tslintの"max-classes-per-file"のデフォルト値が1なんだけどこれどういう意味合いがあってこんな制限がかかってるの?
308:デフォルトの名無しさん
19/09/05 23:30:25.75 Wj2GuKre.net
Best practice is to keep each file limited to a single responsibility.
309:デフォルトの名無しさん
19/09/06 08:25:08.20 yVtePnMR.net
プロジェクトの規模が大きくなっても1ファイル1classって維持できるものなのか?
310:デフォルトの名無しさん
19/09/06 14:16:54.22 2oSh/AAo.net
tsファイルに
string型のnormalize('NFC')を
使おうとしたんだけど、エラーになる。
なんで?
311:デフォルトの名無しさん
19/09/06 19:54:40.86 XEN3PN1i.net
プロジェクトが大きくなることとひとつのファイルに書くクラスの数が増えることとが結びつかないんだが
312:デフォルトの名無しさん
19/09/10 22:41:19.05 KQIOq++N.net
URLリンク(geekly.co.jp)
>TypeScriptはクラスベースオブジェクト指向です。
こんな転職サイトのお世話にはなりたくない
313:デフォルトの名無しさん
19/09/10 22:57:35.54 bRYQFbtI.net
これはひどい
314:デフォルトの名無しさん
19/09/10 23:33:47.24 A1/RuLsT.net
バズワードに踊らされてるだけなのか、ツッコミどころてんこ盛りなのは置いておいて・・・
Geekly Media ライター
バスコ
最新の記事がXAMPPで草生えた
10年前からタイムスリップしてきたのか?
315:デフォルトの名無しさん
19/09/11 10:05:57.98 3t6F0b74.net
>>307
>TypeScriptはクラスベースオブジェクト指向です。
完全に合っているが…何が問題なんだ?
316:デフォルトの名無しさん
19/09/11 20:26:00.45 P5SVRA88.net
TypeScriptはクラスベースでJavaScriptはプロトタイプベースって対比しているのは完全におかしい
クラス構文はただの糖衣構文で実態はプロトタイプベースだし、そもそもクラス構文はES2015にあるんだからJavaScriptもクラスベースという話になってしまう
317:デフォルトの名無しさん
19/09/11 21:06:44.69 IEmfVi5w.net
JavaScriptをプロトタイプベースのオブジェクト指向言語と言うべきではない
URLリンク(blog.anatoo.jp)
318:デフォルトの名無しさん
19/09/12 02:40:31.86 hFthHt+S.net
Haskellは最終的に再代入しまくりのCに変換される(出来る)けど、Haskellは純粋な関数型言語と言われている
オブジェクト指向言語の様に書けてその通りに動けば、オブジェクト指向言語と言える
TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか?
319:デフォルトの名無しさん
19/09/12 08:27:51.94 ome0ZpEu.net
オブジェクト指向的な言語機能に関して言えばTypeScriptはJavaScriptと何ら変わりはないんだから
そのHaskellの例は思いっきり的外れというか牽強付会というか。
>TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか?
プロトタイプが動作しなくなるなら別だが、仕様をまったく変えないという前提なら何も変わらんだろ。
ところで、こんなこと言い張っていた奴なんて見当たらないが、
>TypeScriptはプロトタイプベース
もしかしてクラスベースを否定したらプロトタイプベースを主張していることにされちゃうんだろうか。
320:デフォルトの名無しさん
19/09/12 16:14:58.14 y6P0yrLb.net
TypeScriptはprototypeをいじくるような
321:コーディングは推奨してないだろ 型システムが破綻する その時点でプロトタイプとは関係無い単なるオブジェクト指向言語なんだよ 最終的にどう動いてるか何て関係無い Haskellの様にね
322:デフォルトの名無しさん
19/09/14 21:17:37.20 1MUQqrBS.net
いやなんでそんな必死にその糞ガイジ記事を擁護したがるのかわからん
バスコ本人か?
ちゃんと頭のお薬飲めよ
323:デフォルトの名無しさん
19/09/18 08:52:01.19 F+0EZiKQ.net
知らなかったが、AssemblyScriptなんてあったのか。
既存のTypeScriptのコードがそのままコンパイルできるわけじゃなくて
文法だけが共通の別言語って感じだが。
324:デフォルトの名無しさん
19/09/18 10:08:51.34 L8SHYgAR.net
Ruby と Elixir みたいなもんか
スレリンク(tech板)
325:デフォルトの名無しさん
19/09/18 17:14:10.63 reuwXmQ7.net
ES5以前はともかく、今はPrototypeを意識することは全然ないな
ずっとJavaとかPHPだった人でも違和感なく始められると思う
326:デフォルトの名無しさん
19/09/18 17:29:52.16 fmefOdth.net
でまたまにうんこが顔を出す
327:デフォルトの名無しさん
19/09/18 19:34:20.09 C/YNNC2j.net
3.7はなかなか楽しみな機能が盛りだくさん
328:デフォルトの名無しさん
19/09/18 22:35:58.20 bp3ervLV.net
asserts ええな
pipelineオペあくしろよ
329:デフォルトの名無しさん
19/09/19 10:29:52.30 Nwlz92FM.net
Google、モバイル開発環境を加速するFlutter 1.9、プログラミング言語Dart 2.5リリース
URLリンク(news.mynavi.jp)
Null安全も開発中だそうだし、そうなったら最強かもしれん
TSあやうし!
330:デフォルトの名無しさん
19/09/19 17:24:02.70 uX+yZZQn.net
ksk
331:デフォルトの名無しさん
19/09/19 22:29:49.45 XUz/FlZ3.net
>>323
すでにTSはNull安全なんですがそれは
332:デフォルトの名無しさん
19/09/19 22:33:00.75 Q6kUj/r3.net
TypeScript 3.7 Iteration Plan
URLリンク(github.com)
- Optional Chaining
- Nullish Coalescing
- Assertion Signatures
- Recursive Type References
- ECMAScript Private Fields
- Top-Level await
つよい
333:デフォルトの名無しさん
19/09/19 22:50:14.26 SwC6FU08.net
>>326
Microsoftの本気
334:デフォルトの名無しさん
19/09/19 23:08:15.80 XUz/FlZ3.net
TSあやうし! (笑)
335:デフォルトの名無しさん
19/09/29 01:47:49.36 DcYKtIGC.net
>>326
Recursive Type References
こんなん出来るのか?
再帰はanyで逃げてたわ。
336:デフォルトの名無しさん
19/10/04 15:53:59.79 JXWhYfPM.net
ktkr
URLリンク(forest.watch.impress.co.jp)
337:デフォルトの名無しさん
19/10/04 21:06:33.10 btlbHhjd.net
>>330
いや、必要なのはパッチじゃなくて、明示的なdeprecatedだろ。
MSは全ての官公庁に対して、blinkのブラウザーを強制させるべき。
ゴミ政治家じゃ無理なので、MSがやれ。
黒船代行料として10兆払っても惜しくない。
338:デフォルトの名無しさん
19/10/06 16:12:20.74 GCn9yAhL.net
Object の OR を自動判別ってできないのかな?
下のURLは、TypeScript Playgroundで書いてみたもの
規制で書き込めなかったから、お手数だが concat して開いてほしい
https://
bit.ly
/30Pw8K3
339:デフォルトの名無しさん
19/10/06 16:44:47.50 9GzCvGAT.net
そういうのは、{ type: 'Succeeded'; result: string }と{ type: 'Failed'; message: string } �
340:ンたいにして、typeで分岐させるのが普通だけど、 if ('result' in resp) {} でもいけるよ typescriptの型はただの構造でしかないことがわかれば理解できると思う
341:デフォルトの名無しさん
19/10/06 17:28:21.59 GCn9yAhL.net
>>333
うおお、できた、ありがとう、感動、感謝、完璧です
342:デフォルトの名無しさん
19/10/09 01:40:28.94 5li6ycXf.net
tsconfig.jsonでソースディレクトリの指定は
"include": [
"src/**/*"
]
と "compilerOptions":{
""rootDir": "./src",
のどっちが正しいのですか?
343:デフォルトの名無しさん
19/10/09 07:36:48.39 ldi65x/b.net
コンパイルできる方
マジレスすると上
rootDir って要らなくね?
344:デフォルトの名無しさん
19/10/26 16:09:48.89 z1scFH36.net
もうeslintに移行しても大丈夫かな?
345:デフォルトの名無しさん
19/10/26 16:20:08.49 A0XjOFSl.net
もう3ヶ月前くらいに本番でeslint移行したが、全く問題なくてビビるぞ
346:デフォルトの名無しさん
19/11/06 08:31:23.68 EkX1LXXs.net
Announcing TypeScript 3.7
URLリンク(devblogs.microsoft.com)
347:デフォルトの名無しさん
19/11/06 08:52:02.60 sPTvbp9j.net
( ゚д゚)
_(__つ/ ̄ ̄ ̄/_
\/ /
きたか…!!
( ゚д゚ ) ガタッ
.r ヾ
__l_l / ̄ ̄ ̄/_
\/ /
( ゚д゚ ) スッ
_(__つ/ ̄ ̄ ̄/_
\/ /
348:デフォルトの名無しさん
19/11/06 11:02:39.72 o3tEvZiY.net
1歩進んで2歩さがる
349:デフォルトの名無しさん
19/11/08 14:35:13.79 vk2bSkbm.net
Microsoft、組み込みデバイスをターゲットとしたTypeScriptの高速サブセット”Static TypeScript”を発表
URLリンク(www.infoq.com)
350:デフォルトの名無しさん
19/11/08 15:41:32.87 IHFsmiXW.net
神ってる
351:デフォルトの名無しさん
19/11/08 21:30:00.92 tlySiByz.net
>さらにSTSは、TypeScriptの型規則からも逸脱している。TypeScriptがクラスに構造的型付け(structural typing)を
>使用するのに対して、Static TypeScriptでは名前的型付け(nominal typing)を使用しているのだ。
TypeScriptの人気にあやかった別言語じゃね?
352:デフォルトの名無しさん
19/11/09 02:29:33.32 NblRK941.net
結局ただのC言語の亜種だろ
MSもそんな事をいちいちアピールしないといけないほど落ちぶれたか…
353:デフォルトの名無しさん
19/11/23 10:38:33.96 1aAJfoMg.net
TypeScriptはJSerへの強制型付けギプスだと思えばそこそこ優秀
いつまでもギプスつけた状態で満足するものではないのでそのうちRustなり別の静的型付けに移行する前提であれば賞賛できる
354:デフォルトの名無しさん
19/11/23 10:47:34.10 cqseOAmT.net
TypeScriptはタイプ脳への強制補助輪だと思えばそこそこ優秀
いつまでも補助輪つけた状態で満足するものではないので
そのうち生JSなり別の動的型付けに移行する前提であれば賞賛できる
355:デフォルトの名無しさん
19/11/23 11:57:55.85 cBKKqL2b.net
TypeScriptはタイプ脳への強制補助輪だと思え
ばそこそこ優秀いつまでも補助輪つけた状態で満足するものではないのでそのうち生JSなり別の動的
型付けに移行する前提であれば賞賛できる
356:デフォルトの名無しさん
19/11/23 13:06:34.59 /aIGpl4m.net
型無し糞言語は死ねだと思え
動的糞言語はいつまでも糞でそのうち糞
糞糞糞
357:デフォルトの名無しさん
19/11/30 00:23:57.91 /MHIrz97.net
すみません
今までES5.1を使って来て、これから扱い易いと言われる
TypeScriptを学習しようと思うのですが
逆にTypeScriptの方がJavaScriptより
難易度高いと言う事はありませんでしょうか。
型は値に付く物で変数はそれへの参照、
prototypeはファンクションへの参照格納用プロパティ
Objectは可塑性のある便利な何かという感覚が身についています。
358:デフォルトの名無しさん
19/11/30 05:04:50 TrAQa+kD.net
vscodeといっしょに使えば、jsより楽
型エラーは全てTSが教えてくれる
359:デフォルトの名無しさん
19/11/30 08:52:48.62 5l2Z
360:f0lZ.net
361:デフォルトの名無しさん
19/11/30 09:04:25.09 6ZWltqHp.net
TSの機能を余す事なく使おうと思うと難易度高いけど
其処を目指す必要はない
362:350
19/12/01 22:23:36.97 THamb1cl.net
ありがとうございます。
とりあえず tslint を緩めにしてやってみます。
363:デフォルトの名無しさん
19/12/02 06:56:16 mLOeT+PU.net
TS初心者ですがお勧めの書籍ありませんか?webpackとかも合わせて勉強したいです。
364:デフォルトの名無しさん
19/12/04 22:44:25.30 sxQF45hm.net
interface A {
x: string;
}
a: A;
A.xの型(string)を取り出したい場合 typeof A.x じゃダメで typeof a.x ならいけたけど、
aみたいな変数を使わずに typeof A.x 相当のことってできないんだっけ?
365:デフォルトの名無しさん
19/12/05 07:17:39 mSvldXoX.net
A['x']
366:デフォルトの名無しさん
19/12/05 08:56:27.95 pFxixMvG.net
なるほど。ブラケット記法って最近とんと使わなくなったけど、こんなところに使い道残ってたんだ。
367:デフォルトの名無しさん
19/12/21 15:23:23.21 BSqycIZI.net
実践TypeScript - BFFとNext.js&Nuxt.jsの型定義、吉井 健文、2019/6/26
今まで、TS の本は、あまり無かったので買ってみた
入門者用の文法の説明が、130ページしかない。
残りの190ページが、各フレームワークへの対応
本屋で、他の本を見たら、
掌田津耶乃は、Node.js, Vue.js, React, Angular の本を出してるw
山田祥寛も、Vue.jsの本を出した
368:デフォルトの名無しさん
19/12/21 15:40:03.75 BpSzdr8P.net
vueは根本から型が腐ってるから使う必要なし
369:デフォルトの名無しさん
19/12/21 19:32:06.97 MnINNRtE.net
やっぱ React か
370:デフォルトの名無しさん
19/12/21 22:14:02.68 K0kobvcw.net
日本人は馬鹿だからしょうがない。
世界的にはreactなのに、世界と同じものでは戦えないからなのか、日本ではvueを使おうとする
371:デフォルトの名無しさん
19/12/24 13:31:33.33 WgZ9RMXM.net
記述がスゲー長くなって見づらい
これって劣化javaみたいな記述にならない?
jsの良さが完全に死亡してる気が…
372:359
19/12/24 13:53:39.03 3XzgnZW7.net
実践TypeScript を読んでるけど、TS の細かい挙動の怪しい所が多いから、
その例外的なルールの数を覚えるのが大変。
つまり、ハマる箇所を避けるのが大変
TS を学ぶと、Haxe の偉大さが分かる!
JavaScript のおかしい部分を修正しているから、かなりやりやすい
373:デフォルトの名無しさん
19/12/24 21:47:34.41 j2uQerkx.net
JSに良さなんてあったのか!?びっくりドンキー!
374:デフォルトの名無しさん
20/01/04 19:44:33.72 pllwqfHK.net
3.7でECMA private field 使えないんだな。ガチのprivateはお預けかぁ
375:デフォルトの名無しさん
20/01/04 19:55:56.50 Gwa4LI2s.net
ECMA private fieldの必要性、全く感じないわ
376:デフォルトの名無しさん
20/01/16 00:04:23 YIQKI70M.net
ts拡張子のts動画との棲み分けってうまい方法あるかな?
377:デフォルトの名無しさん
20/01/17 22:59:25 c8jQBH00.net
tsxにする
378:デフォルトの名無しさん
20/01/21 10:46:46 YewYG19G.net
ts-jestはテストのたびに*.test.tsをTypescriptからJavaScriptにコンパイルしてテストを実行しているのですか?
テストコードが変わらなくても、内部的にコンパイルしてるの?
それとも、tscコマンドでテストコードもコンパイルしてjsファイルに変換したら、それを利用してるの?
379:デフォルトの名無しさん
20/01/24 09:42:02.04 apHhsOxs.net
プロパティでyield のやりかたわからん。
get hoge : Generator<number,void,boolean> {
return (function* (){ yield 1; yield 2; yield 3; })();
}
とかでええの?
なんか get* hoge も *get hoge も get *hoge も怒られる。
380:デフォルトの名無しさん
20/01/24 22:27:44.69 gpzJLuFb.net
そもそも getter にジェネレータ記法はない
381:デフォルトの名無しさん
20/01/24 23:21:56 pw14qEqb.net
getterでそんな複雑なことをするんじゃあない・・・
382:デフォルトの名無しさん
20/02/24 18:47:37 Av6u/PEd.net
<Ts extends Array>(...args: Ts)=>
でTsの全ての型の交差型を返したいんだけど可能?
383:デフォルトの名無しさん
20/02/24 23:10:15 dJSyQnEN.net
Typescript: Retrieve element type information from array type - Stack Overflow
URLリンク(stackoverflow.com)
Creating types from values in array ・ Issue #28046 ・ microsoft/TypeScript
URLリンク(github.com)
keyof for arrays ・ Issue #20965 ・ microsoft/TypeScript
URLリンク(github.com)
この辺どうよ
できたら教えて
384:デフォルトの名無しさん
20/03/02 20:34:14 Vt4u2rjY.net
締め付けはガチガチなのにガバガバな構文
トランスパイルのせいで起動は遅いし設定項目やハマりポイントはクソ増える
選択肢のないフロントはともかく、言語を選び放題なサーバーでts入れてまでjsを使う意味ってなに?
385:デフォルトの名無しさん
20/03/04 19:31:12 Xkhzo69W.net
>>376
キツマンなのに誰とでも寝るみたいなん感じか
386:デフォルトの名無しさん
20/03/05 00:10:09.52 aV1N9imN.net
型無し言語というジャンルで見ると、一番マシ
387:デフォルトの名無しさん
20/03/07 19:41:25.48 Gq72B5Zp.net
URLリンク(github.com) をC#に書き直してる。
44行目からのwithが分からん。
with(newLineNumber: number = this.lineNumber, newColumn: number = this.column): Position {
if (newLineNumber === this.lineNumber && newColumn === this.column) {
return this;
} else {
return new Position(newLineNumber, newColumn);
}
解説とC#に書き直して。"Create a new postion from this position."ってあるけど、
どう呼ばれるの?もしかしてwith文じゃなくて、with()ってメソッド?
388:デフォルトの名無しさん
20/03/07 20:06:50.29 74qnesAz.net
メソッドの定義以外の何に見えるのか
389:デフォルトの名無しさん
20/03/07 21:33:39.02 po15mmZE.net
そもそも JavaScript に with 文なんて・・・あるのかよ何だこの邪悪な臭いがプンプンするやべえやつは
390:デフォルトの名無しさん
20/03/08 10:00:55 Dz/wpeTc.net
>>203
御社は今どういう状況になってる?
391:デフォルトの名無しさん
20/03/08 13:25:25 /+j1E1ja.net
>>382
何も変わっとらんよ
機能拡張もできないから、現状維持という名の放置
392:デフォルトの名無しさん
20/03/08 13:39:52 Dz/wpeTc.net
サンクス
393:デフォルトの名無しさん
20/04/14 00:16:42 Rf+yV41A.net
違い何?
interface Dictionary<T> { [key: string]: T; }
type Dictionary<T> = { [key: string]: T; };
394:デフォルトの名無しさん
20/04/14 00:52:31.86 1s8555QT.net
そのコードに限っては、違�
395:「ないかもな interface は後から追加できる これ playground にでも貼ってみ ``` interface DictionaryI { a: string b: string } type DictionaryT = { a: string b: string }; interface DictionaryI { wow: number } type DictionaryT { wow: number } const di: DictionaryI = ({} as any) console.log(di.wow) ``` だから、ライブラリの定義ではたまに使われる プロダクトコードで使ってる奴は物知らないか、設計力のないやつ
396:デフォルトの名無しさん
20/04/14 08:03:12 KwYjFqSp.net
>物知らないか、設計力のないやつ
どうして?
397:デフォルトの名無しさん
20/04/14 08:24:49.93 NW9baKp2.net
>>386
ケツにIとかTを付けるのは設計力の無いやつ
398:デフォルトの名無しさん
20/04/14 08:34:25 1s8555QT.net
>>388
ただのサンプルコードにそんなこと言われてもwww
>>387
以下理由
・昔デフォルトONだったprefer-interfaceを引きずっている
・自分で管理できるコードなのに、interfaceで拡張する余地を残さねばならないのはおかしい
399:デフォルトの名無しさん
20/04/14 08:54:36 NW9baKp2.net
>>389
> ・自分で管理できるコードなのに、interfaceで拡張する余地を残さねばならないのはおかしい
オブジェクト指向を全否定かよw
400:デフォルトの名無しさん
20/04/14 10:13:18 1s8555QT.net
>>390
たぶん君は、Java の implements に使える interface のことを言ってるのだと思うが、
type でも implements 相当の宣言ができるので、
TS の interface は src 変更が容易でないが、ライブラリの性質上拡張の余地が必要なケースでしか有効でない
「同じ名前の型なのに、実は後から src のどこかで拡張されてました」なんて嫌だろう?
どこの JavaScript だよ
401:デフォルトの名無しさん
20/04/14 18:14:19 Rf+yV41A.net
>>386
なるほど
ありがと
402:デフォルトの名無しさん
20/04/26 04:53:02 IAt9cGuZ.net
function hoge<T, S> (x: T, f: (x: T) => S) {
// ...
}
みたいな関数があって、引数f のデフォルト値を identity:<T>(x: T) => T
にしたいんだけど、無理かしら?
hoge(1) <-- このときは T: number, S: number と推論してほしくて、
hoge(1, n => `number: ${n}`) <-- このときはT: number, S: string と推論してほしい
403:デフォルトの名無しさん
20/04/26 05:47:15.51 IAt9cGuZ.net
ごめん、自己解決した
TypeScriptでは依存型をオーバーロードで実現できるのね
```
function hoge<T>(x: T): T;
function hoge<T, S>(x: T, f: (x: T) => S): S;
function hoge<T, S>(x: T, f?: (x: T) => S) {
if (typeof f === "undefined") {
return x
}
return f(x)
}
```
これで一応、第2引数指定しなかったら、戻り値の型を第1引数の型で推論してくれるようになったし、
指定すればその関数の戻り値の型で推論してくれるようになった
404:デフォルトの名無しさん
20/05/13 20:55:34 Z2ECG7mm.net
Announcing TypeScript 3.9
URLリンク(devblogs.microsoft.com)
405:デフォルトの名無しさん
20/05/13 22:51:12 8OQL2q6a.net
>Our team has been focusing on performance after observing extremely poor editing/compilation speed with packages like material-ui and styled-components.
あーやっぱり material-ui と styled-components が遅いんだ
両方使ったら耐え難いレベルで重くて辛かった
406:デフォルトの名無しさん
20/05/17 20:28:24.81 eDtMluXf.net
初学者が今からTypeScriptやるメリットってある?
普段使ってるC#のBlazorが育つまで我慢してそれまではJS使えばいいかなーという気がしてるんだけど
407:デフォルトの名無しさん
20/05/17 21:27:13.06 07c/uCSO.net
・BlazorがTSと同等レベルまで言語・市場が育つことはありえない
・JSに毛の生えた程度の文法でC#と同等以上のタイプセーフの恩恵を受けられる
と思うよ
正直TS始めて
408:からは、JS(特に他人が書いたやつ)は2度と触りたくなくなった
409:デフォルトの名無しさん
20/05/17 22:05:58.39 ShD9HsIi.net
仕方なく js 書いてる時も jsdoc で型を付けまくってる
もうあの頃には戻れない・・・
410:デフォルトの名無しさん
20/05/17 22:08:17.75 ilBeXKNK.net
毛が生えたと言われてもジェネリクス周りとか仕様がけっこう大きい(大きいだけでそんなに難しくは無いけど)。あと歴史的に同じような機能のものが複数あるのはやや辛い。
411:デフォルトの名無しさん
20/05/17 22:10:49 ilBeXKNK.net
素のjsは確かに触りたくなくなったな~
412:デフォルトの名無しさん
20/05/17 22:12:40 07c/uCSO.net
>>400
まぁそうだけど、最初はbetter js程度に :string みたいな単純な型書くだけでいいと思うよ
それだけで劇的に違ってくる
413:デフォルトの名無しさん
20/05/18 06:26:49.70 IgsFvSEI.net
>>402
確かにそうだわ
414:デフォルトの名無しさん
20/05/18 09:34:50.89 /q4v9RIOI
TypeScriptのnamespaceってJavaのpackageやPHPのnamespaceとは違うものでしょうか?
型定義ファイルでいくつかのinterfaceをnamespaceでくくり、
別ファイルで「import PostRequest = SlackApp.PostRequest」で参照したら
TS2702: 'SlackApp' only refers to a type, but is being used as a namespace here.
と言われてしまいました。
括らないで「import { PostRequest } from '../types/PostRequest'」で参照したらエラーにはならなかったです。
複数の定義をまとめる目的で使うものではないのでしょうか?
それとも書き方を間違えてますか?
415:404
20/05/18 09:35:28.60 /q4v9RIOI
claspを使ってGoogle Apps ScriptをTtypeScriptで書いていて、SlackのSlash Commandのリクエストを定義したいです。
// src/doPost.ts
import PostRequest = SlackApp.PostRequest
function doPost(request: PostRequest) {
SlackApp.postMessage(JSON.stringify(request))
}
// types/SlackApp.d.ts
declare namespace SlackApp {
interface PostRequest {
parameter: SlashCommandParameter,
/* 省略 */
}
interface SlashCommandParameter {
/* 省略 */
}
interface SlashCommandParameters {
/* 省略 */
}
}
416:デフォルトの名無しさん
20/05/19 12:17:36.04 m7E0nRpi.net
クラス使えるだけで嬉しかった。prototypeとか二度と触りたくない。
417:デフォルトの名無しさん
20/05/19 19:57:31 JYXLTsSv.net
せっかくTypeScript使うのになんでクラス
418:デフォルトの名無しさん
20/05/19 20:00:38 lV40zBP6.net
jsonに型が付くのマジサイコーって気分になる
419:デフォルトの名無しさん
20/05/20 18:25:07.86 uCxRgACC.net
@types/node を v14:x に上げたら fs.write* 周りでエラーがいっぱい出た
以前の型定義ファイルでは第2引数が any だったために見逃されてたのね
420:デフォルトの名無しさん
20/05/20 19:13:29 kUjfC17v.net
vscoe+deno
d.tsを用意してjsをimportたがインテリセンスに型情報がでない
421:デフォルトの名無しさん
20/05/20 19:43:48 q4rNYEAk.net
アーリーアダプタすぎっしょ
422:デフォルトの名無しさん
20/05/28 04:29:10 YaDoyLzB.net
質問させてください
初歩的なものかと思いますがよろしくおねがいします
以下の様に getElementById() にてinput要素を取得した場合、value属性を読み取ろうとすると問題が発生します。
const input = document.getElementById('input');
const text = input.value; // <- プロパティ 'value' は型 'HTMLElement' に存在しません。ts(2339)
解決方法を検索すると、
const input = <HTMLInputElement>document.getElementById('input');
const input = (document.getElementById('input')) as HTMLInputElement;
などの型ア�
423:Tーション?キャスト?で解決するように書いている記事が多くヒットするように感じます。 質問としましては、 ・HTMLElementではなくHTMLInputElement等の具体的な型で要素を取得する方法はありますか? ・具体的な型で取得できない場合、それがHTMLInputElementであると判定する方法はどのようなものがありますか? 以上、長くなりましたがご教授頂けると嬉しいです。
424:デフォルトの名無しさん
20/05/28 05:30:32 uIAU+1VL.net
>getElementById
英語読め
425:デフォルトの名無しさん
20/05/28 07:36:15.22 XtQwhE1K.net
>>412
URLリンク(bi)□t.ly/2zBJQbZ
こんな感じでいかがでございましょうか?
getElementById の取得結果は、HTMLElement を継承した何かであることは確実だが
より具体的な型であることは if 文などで判定しないとわからないので
(読みやすい)ワンライナーするのは難しいかな
426:デフォルトの名無しさん
20/05/28 07:37:06.32 XtQwhE1K.net
リンク先は typescript playground
長すぎて貼れなかった
url中の□を取っ払ってアクセスしてほしい
こっちも短縮url規制で貼れなかった
427:デフォルトの名無しさん
20/05/28 08:20:23 YaDoyLzB.net
>>414,415
なるほど、constructorと型の名称は一致するので比較に使えるのですね。
3パターンもありがとうございます。参考にさせて頂きます。
428:デフォルトの名無しさん
20/06/03 19:01:52.32 +riA6q4Z.net
vscodeのタスクでビルドしたいのですが、上手くいきません。
最初から入っていた"tsc: ビルド - tsconfig.json"という設定を使ってタスクを実行すると、
> Executing task: tsc -p (省略)\tsconfig.json <
パラメーターの書式が違います - -Command
と出てビルドが終了しません。
コンソールに同じコマンドをコピペするとちゃんとjsファイルが作成されます。
ググってみたのですが、そもそもtscで「パラメーターの書式が違います」というエラーが出るという記事すらありませんでした・・・
どうすればいいでしょうか。
429:デフォルトの名無しさん
20/06/03 19:16:49.18 W7xz+V5+.net
普通にnpmとnpm scriptの一部に組み込んだ方がいいと思う
vscodeのタスクとか使ったことないし、必要性も感じたことないな
430:デフォルトの名無しさん
20/06/04 22:32:22.64 c/bZjxGo.net
tscがどこにインストールされてるか、とか関係ありそう
431:デフォルトの名無しさん
20/06/04 23:13:01.10 hC0MsN2x.net
npx tsc --init
で、tsconfig.json が出来る
package.json に、こう書いておいて、
"script": {
"build": tsc
},
npm run build
で、コンパイルする
432:デフォルトの名無しさん
20/06/06 19:11:34 FUHWS7EH.net
>>418
そうすることにします
>>419
AppData\Roaming\npm
にありました。
>>420
元々コンソール上からはどのコマンドも実行できるのですが、
vscodeのタスクから使うとエラーが出てしまうんです。
色々テストしていたところ、
単なるシェルコマンド echo unko ですらエラーが出るのでvscode固有の問題っぽいです
433:デフォルトの名無しさん
20/06/06 20:04:01.16 vddsi0s3.net
>>417
パラメータの書式が違うってのはPowerShellでよく見るエラーだけど、VSCodeってPowerShell叩いてるんだっけ?
VSCode固有の問題と決めつけるんじゃなくてもう少し調査してみたら?
434:デフォルトの名無しさん
20/06/07 10:34:46 s05OkEKn.net
解決しました
日本語版のWindowsではpowershell.exeがShiftJISで読まれるので、
合わせてvscode上のPowerShellの文字コードをShiftJISに変えていたのが原因でした。
元のUTF-8に戻したら問題なく実行できました。
tscをフルパスで実行したらパスの途
435:中にスペースが発生し、 PowerShellスクリプトのデバッグ時によく見た文字化けだったので気づけました。 >>422 ご名答です PowerShellが叩かれていて、エラーもPowerShellからでしたw
436:デフォルトの名無しさん
20/06/11 18:33:48 Jv4rHxRX.net
Nodeでサーバーを立てているような場合、
ユーザーが入力した値を格納する変数の型は一旦unknownとしておいた方が良いのでしょうか?
例えば以下の様な場合です。
const func1 = (userInput: unknown) => {...};
const func2 = (userInput: string) => {...};
バリデーション等を行って問題が無ければ、
改めて型宣言した変数に代入し直すような方法が一般的ですか?
437:デフォルトの名無しさん
20/06/13 14:38:30 fZdtN3m2.net
ついにDartがnull安全になったそうな
URLリンク(forest.watch.impress.co.jp)
webからiOSまで1言語で書ける(ちゃんと動くとは言っていない)
438:デフォルトの名無しさん
20/06/13 16:20:45.29 cnsVZnHy.net
今TypeScript+Reactを勉強しているのですけど、テーブルのコンポーネントで使いやすいものって無いですか?
テーブルのヘッダはそのままで縦は内容だけスクロールして横はテーブルも一緒にスクロールするみたいなものが良いです
439:デフォルトの名無しさん
20/06/13 21:17:17.22 qaq6yJI2.net
jexcel
react-table
react-tableは、初心者なら v6 おすすめ
理由は、標準でUIが付いてるから簡単にそれっぽいものができる
ドキュメント調べれば割と多くの挙動に対応できるはず
代わりに、UIのカスタマイズがつらい
「あそこのcssを弄りたいけど、どうやって指定すればいいかわからん」
「!importantじゃないと上書きできない」
的なことになりがち
あと、@types を v6 のをインストールするよう注意すること
UIごりごりにカスタマイズしたいなら最新の v7
headless と謳われてるように、UIが一切ないから全て自分の思い通り
代わりに、学習コストが高い
あと @types 書いたやつがバカなのか、Genericsの対応が酷くて
キャストがたくさん必要でうんざりする
440:424
20/06/14 00:14:28 uuDX9j1b.net
>>427
有難うございます、react-tableを調べてみます。
material-uiがElectronで
TypeError: Cannot use 'in' operator to search for 'ontouchstart' in null
とか出て動かなくて困っていました。
ボタン一個しか指定していないサンプルを写してこれです。
441:デフォルトの名無しさん
20/06/14 00:51:17.06 864/oVLm.net
>>428
URLリンク(stackoverflow.com)
速攻それっぽいの出てきたが、ちゃんとググったかねキミィ?
442:デフォルトの名無しさん
20/06/14 12:09:11.89 qCi3/fDK.net
これっぽいの見たことあるけど、他にも気になる事があって見落としてました
<div>に書いてあるの要るのかな?
今試せる環境でないので後日に
443:デフォルトの名無しさん
20/06/25 08:05:47.95 Nd1uEPT+.net
TypeScriptってsetIntervalとかsetTimeout,
async/await, Promiseとか使えるんですか?
444:デフォルトの名無しさん
20/06/25 08:55:25.54 3QV8gPE9.net
逆に使えない意味がわからない
445:デフォルトの名無しさん
20/06/25 09:53:31.94 2LahzjFh.net
Ruby on Rails では、React も多いけど、
TypeScript を使う香具師は、いるのかな?
446:デフォルトの名無しさん
20/06/25 10:01:29.46 PKyG+WtC.net
ルビカスは宗教
447:上の理由からTypeScriptなは絶対に使えないんで消えて フロントエンドの方が厳格な言語で書かれてるとか頭おかしいからなw
448:デフォルトの名無しさん
20/06/25 10:37:01 V5BYtNqQ.net
かわいそうに。
449:デフォルトの名無しさん
20/06/25 11:14:26.11 2XRewe5U.net
CoffeeScriptとは何だったのかω
450:デフォルトの名無しさん
20/06/25 11:57:37.69 2LahzjFh.net
Ruby on Rails 6 から、Node.js, webpack が標準になったから、
もう、Coffee Script には依存していない
451:デフォルトの名無しさん
20/06/25 14:16:09 3QV8gPE9.net
だからどうしたRubyガイジ
さっさと消えろ
452:デフォルトの名無しさん
20/06/25 14:49:25.12 V5BYtNqQ.net
webpack使えるなら、普通にもうRoRでhtml作る必要ないのでは
453:デフォルトの名無しさん
20/06/25 14:51:02.50 V5BYtNqQ.net
ほんまやな
PHPもRubyも、型無し糞言語は滅びるべきや
json以外を喋る邪悪なWebサーバーは1台残らず破壊しろ
454:デフォルトの名無しさん
20/06/25 14:52:55.59 3edAgV/k.net
この場違いRuby妖怪はアンカ飛ばさんでも一応レス見てる素振りを見せるのがちょっとしたホラー
455:デフォルトの名無しさん
20/06/26 03:43:22.98 4Xp41V6m.net
GUI は、React, Bootstrap で良いけど、
サーバ側が、Node.js じゃ辛い
Rails, Sinatra などの、Ruby の方が分かりやすい
Rubyの欠点は、web アプリだけしか作れないこと!
スマホ用アプリも必要なら、Electron, React Native + Expo
それか、Unity
456:デフォルトの名無しさん
20/06/26 07:42:47 Sd6G194T.net
Rubyの欠点はお前みたいなキチガイがスレチのクソ宣伝で評価を下げてることだよ
457:デフォルトの名無しさん
20/06/26 14:54:51.55 6IXnju0o.net
URLリンク(twitter.com)
多言語disをついやってしまう癖を止めて欲しい。
最後に参加したTokyuRubyKaigiで「Javaやってる人手を挙げてはーい♪今挙げた人はすぐに帰ってくださーい♪」って言ったのは忘れたくても忘れられない。
(deleted an unsolicited ad)
458:デフォルトの名無しさん
20/06/26 16:51:07 Z5HJiD+l.net
型無し糞言語やってる人は帰るだけじゃ済まされない
死んでください
459:デフォルトの名無しさん
20/06/26 18:00:16.15 9etEQyfp.net
俺も東横線代表として参加してくるわ
460:デフォルトの名無しさん
20/06/26 20:32:19.16 aHXqCiQW.net
>型無し糞言語
今どきの言語で何があったっけ?
461:デフォルトの名無しさん
20/06/26 22:12:45.13 TcIyIoqu.net
>>444
10年以上前に同じようなJava disやってたスピーカーがいたが
別のスピーカー/コミッター達にあれはやめたほうがいいって厳しく批判されてたけどな
その時代の話なのかな
462:デフォルトの名無しさん
20/06/27 01:29:27.09 9wE9An+g.net
ありますで喩えると
Java山中さん
*by笹井さん
463:デフォルトの名無しさん
20/07/01 14:29:27.01 OAvcKBIQ.net
Talking TypeScript with the engineer who leads the team
URLリンク(stackoverflow.blog)
464:デフォルトの名無しさん
20/07/15 11:01:56.72 IqfNcqeZ.net
TypeScript で、無名配列のJSON ファイルは、import できない
[
["a", 10],
["b", 20]
]
名前を付ければ、import できる。
import { xyz } from "./a.json";
{"xyz": [
["a", 10],
["b", 20]
]
}
465:デフォルトの名無しさん
20/07/15 12:14:33.71 cL9c5hZ8.net
typescriptに限らず
そういう実装結構ある
全体は{}を仮定してるの
466:デフォルトの名無しさん
20/07/15 13:02:18.34 pL8+4mwq.net
jsonってトップレベルはObject
467:必須だと思ってた そういう仕様あるのかな
468:デフォルトの名無しさん
20/07/15 15:59:04.81 T1dYtDa5.net
Type Script 使ってみて思ったけど
最初から ES がこの仕様だったら本当に助かってた
そして今の課題は既にある ES のライブラリ摂りこむのが面倒
なんとかならんのか??っていう
469:デフォルトの名無しさん
20/07/15 16:48:00.29 cL9c5hZ8.net
C# 使ってみて思ったけど
最初から C がこの仕様だったら本当に助かってた
そして今の課題は既にある C のライブラリ摂りこむのが面倒
なんとかならんのか??っていう
470:デフォルトの名無しさん
20/07/15 16:58:29.54 pL8+4mwq.net
割とマジで攻守共にTypeScriptが最強だわ
TSに欠けてるのは、あとはパターンマッチくらいだろう
TypeScriptがネイティブバイナリ吐くようになればいい
471:デフォルトの名無しさん
20/07/15 19:14:22.28 Iul+D8/c.net
>>451
そもそもimportはjsonを読むためにあるわけじゃないから読めなくても不思議はないが、
ts3.9.6で試してみたら普通に読めるんだが?
>>453
rfc読めばわかるがトップレベルだけ特別扱いする必要ないしね。
472:449
20/07/15 19:20:18.72 IqfNcqeZ.net
./a.json に以下だけを書いて、どういうimport 文を書いたの?
[
["a", 10],
["b", 20]
]
473:デフォルトの名無しさん
20/07/15 20:06:40.11 Iul+D8/c.net
ふつうに
import j from './a.json';
"module"は"commonjs"
474:デフォルトの名無しさん
20/07/15 20:24:52.52 guZu56HE.net
esModuleInterop か allowSyntheticDefaultImports は true になってる?
false や未設定なら、 `import * as j from './a.json';` でインポートする必要がある
475:デフォルトの名無しさん
20/07/15 20:31:01.05 Iul+D8/c.net
ああすまん、"resolveJsonMdule": true してた。
つまりmoduleじゃないjsonをロードしたいならこれが必要ってことね。
476:449
20/07/15 21:20:34.32 IqfNcqeZ.net
あれ? 普通に、これで、import できた!
漏れの勘違いだったみたい
import j from "./a.json";
漏れの設定は、
"module": "es2015",
"esModuleInterop": true,
"resolveJsonModule": true,
477:デフォルトの名無しさん
20/07/16 13:16:30 Bj5j4Y6i.net
こういうのはだめなんだっけ
[
["a", 10],
["b", 20],
]
478:デフォルトの名無しさん
20/07/16 15:09:37.34 J/CG/YnB.net
TypeScript の開発中は、
Webpack のオフライン機能、workbox を使わないから、
package.json の、"workbox-webpack-plugin": "^5.1.3" を、
コメントアウトしようとしたが、形式エラーになって出来ない
削除はできるけど、コメントアウトで残しておきたい
479:デフォルトの名無しさん
20/07/16 15:10:33.56 L+apgnKF.net
gitを使いましょうよ・・・
480:デフォルトの名無しさん
20/07/16 15:13:26 J/CG/YnB.net
>>463
JSON ファイルでは出来ない
よく知らないけど、新しめの、JS/TS ファイルでは出来るかも
481:デフォルトの名無しさん
20/07/16 18:14:40 QwF0ci9g.net
よく知らないなら黙ってろrubyガイジ
482:デフォルトの名無しさん
20/07/16 18:31:21.38 L+apgnKF.net
>>463
ケツカンマをファックできるのはECMAScript 5以上
JSONはファックできない
483:デフォルトの名無しさん
20/07/22 02:36:42.07 2/9nnKBr.net
クライアント向けの開発サーバーが付いている、Parcel を使っている香具師いる?
Postman を使っている香具師いる?
これは、REST クライアントかな?
漏れは、VSCode の拡張機能の、REST Client を使っているけど
他には、TypeScript で、Express サーバーを実行する、ts-node-dev は?
484:デフォルトの名無しさん
20/08/01 03:44:15.17 BmlbAE5y.net
pacage.jsonのバージョンを取得したくて
src/index.tsで
import {version} from '../package.json'
を思いついたのですが、これだとコンパイルでdistに排出されるときにpackage.jsonも排出されてしまいます
これを解決する(依存関係をdistに持ってくるのではなくが./package.jsonを常に読むようにしたい)方法はあるのでしょうか?
485:デフォルトの名無しさん
20/08/01 07:24:44.96 WBys/b
486:G4.net
487:デフォルトの名無しさん
20/08/01 19:08:50.40 BmlbAE5y.net
>>471
自分的にはdistに排出される先にもう一つpackage.jsonが作られるのが気持ち悪いと感じたのですがそうでもないんですかね?
488:デフォルトの名無しさん
20/08/01 21:11:01.65 PGLLO5uD.net
たしかにキモい
489:デフォルトの名無しさん
20/08/01 21:32:06.85 WBys/bG4.net
普通にgitignoreしてるだろうしdistにpackage.jsonがあっても特にデメリットないし
distに何が吐かれててもええんちゃう?
490:デフォルトの名無しさん
20/08/03 07:34:16.45 qdvto+rV.net
>>470
process.env.npm_package_version
じゃダメなの?
491:デフォルトの名無しさん
20/08/03 09:46:39.86 l1ICYS01.net
>>475
横からだけどサンキュー
こんなことできるんだね、勉強になった
package.jsonの各種要素を読み込みたい! - DEV
URLリンク(dev.to)
492:デフォルトの名無しさん
20/08/03 10:52:32.11 qdvto+rV.net
>>476
公式にもこんなところにしれっと書かれてる
URLリンク(docs.npmjs.com)
package.jsonの各フィールドの説明してるページには書いてないんだなぁ…
493:デフォルトの名無しさん
20/08/05 08:07:16.62 uWbem7nq.net
Announcing the new TypeScript Website
URLリンク(devblogs.microsoft.com)
494:デフォルトの名無しさん
20/08/21 08:26:54.83 D9+iHL3k.net
Announcing TypeScript 4.0
URLリンク(devblogs.microsoft.com)
495:デフォルトの名無しさん
20/08/21 09:31:14 pu35Qu/1.net
もう4.0の時代なのか・・・
それなのにおまいらのプロダクトときたら・・・
496:デフォルトの名無しさん
20/08/21 11:12:40 7l2hhkMF.net
現場猫『ヨシッ!』
497:デフォルトの名無しさん
20/08/21 11:15:43 6zccVHNz.net
監督猫『ヨシッ!』
498:デフォルトの名無しさん
20/08/21 13:28:51.80 pu35Qu/1.net
一次請猫『ヨシッ!』
499:デフォルトの名無しさん
20/09/14 09:29:26.60 CfIbX1f0.net
ここで聞いて良いのかわからないけどimportの拡張子(.js)を省略して、js変換時に拡張子をつけることってできないかな?
開発中はtsc使って開発者終了時だけwebpack使いたいのだけども
500:デフォルトの名無しさん
20/09/14 09:33:13.37 /HJ+wc6C.net
そのようにwebpack設定するだけでは
cssやjpgとかの非プログラムファイルにしかimport文に拡張子書いたことないわ
501:デフォルトの名無しさん
20/09/14 21:55:40.83 CfIbX1f0.net
webpackの方でなんとかするしかないか。
ありがと
502:デフォルトの名無しさん
20/09/15 00:09:40.68 g6ghhz4T.net
typescript のポリシーからすると将来的にも対応される可能性は低い
503:デフォルトの名無しさん
20/09/28 14:36:37.18 NZq3hOP+.net
マイクロソフト発のオープンソース言語「TypeScript」、生みの親が語る開発当初や背景
URLリンク(japan.zdnet.com)
504:デフォルトの名無しさん
20/09/28 19:49:45.93 kE1qWQhp.net
TypeScriptのまえにWebAssemblyが登場していたらみなそっちに飛び付いたのだろうか。
505:デフォルトの名無しさん
20/09/28 22:54:37.39 t2I6kwxp.net
何だかんだ言ってみんなJavaScriptが大好きだからな
それにブラウザに実装されているAPIはJavaScriptから使うこと前提だからWebAssembly使っても余計な苦労するだけだ
ゲームには向いてるだろうけど
506:デフォルトの名無しさん
20/09/28 22:56:43.96 L69JRisQ.net
既存のJS資産を流用できたのも強みの1つだったと思うから、やっぱTSの戦略勝ちじゃねえの
つかWASMって一時期騒がれてたけど今どうなったんだ?
507:デフォルトの名無しさん
20/09/28 23:49:19.24 XJOyCoAG.net
>>491
Unityが実用?になってるぐらい。
なにしろ、仕様も含めて
今後どうなるかわからん状況では?
508:デフォルトの名無しさん
20/09/29 09:41:15.62 tKw94fLv.net
FlutterがDartじゃなくてTSだったら良かったのに
509:デフォルトの名無しさん
20/09/29 11:21:16.26 P1Q7o4iq.net
ほんとそれな
あんな劣化Javaみたいな言語ありがたがってる連中の頭が理解できない
510:デフォルトの名無しさん
20/09/29 12:10:42.86 aaxcyAZi.net
大して機能違わないじゃん。
何が足りないと思ってるの?
511:デフォルトの名無しさん
20/09/29 13:15:04.46 pjrsoCYz.net
知能
努力
向上心
512:デフォルトの名無しさん
20/09/29 13:35:36.65 P5R6/7cr.net
そうだな、JavaとJavaScriptも一緒だしな
513:デフォルトの名無しさん
20/09/29 14:11:13.25 Y54HkFIW.net
>>495
NULL安全とか?
514:デフォルトの名無しさん
20/09/29 15:46:22.91 aaxcyAZi.net
>>498
あるよ
>>496
ないよ
515:デフォルトの名無しさん
20/09/29 18:45:22.24 fbgKh1ZX.net
マイクロソフト発のオープンソース言語「TypeScript」、生みの親が語る開発当初や背景
URLリンク(japan.zdnet.com)
516:デフォルトの名無しさん
20/09/30 13:09:08.11 pBMNn9J9.net
>> Microsoftが2018年に75億ドル(約8000億円)を投じて買収したGitHub
知らんかった
オンライン版のvscodeがGitHubにあるのはそういうわけか
517:デフォルトの名無しさん
20/10/02 00:47:34.12 c4z818i5.net
ピチャイのマイクロソフトは良いマイクロソフト。
518:デフォルトの名無しさん
20/10/10 13:18:23.70 hWE3VueY.net
こんにちは。プログラミング初心者です。
TypeScriptとJavaScriptはどっちが最強なんでしょうか?
これから始める場合はどっちがいいのですか?
TypeScriptはJavaScriptとくらべ実行速度は変わらないのに
静的型付けのため記述が面倒で学習する価値がないと友達が
言ってたんですがこれは正しいですか?
519:デフォルトの名無しさん
20/10/10 14:42:01.38 xtGRZD/P.net
>>503
普段からめちゃくちゃな
読めないコード書いてる人には
難しいと思いますよ。
520:デフォルトの名無しさん
20/10/10 15:45:53.37 hWE3VueY.net
>>504
なるほど。つまりTypeScripはtコードをきれいに見せるためだけの言語ってことなんですね。
521:デフォルトの名無しさん
20/10/10 15:53:32.39 PAS52Dcu.net
価値がわかるようになるまではJS使うのをおすすめする
今TS触っても嫌いになるだけだと思う
522:デフォルトの名無しさん
20/10/10 16:35:21.67 hWE3VueY.net
ん。。。価値が分かる人にしかわからないプロ向けの言語なんですね。。。
523:デフォルトの名無しさん
20/10/10 16:57:30.55 OrgjdyW8.net
綺麗に見えるということは他人が書いたコードであっても理解しやすいといえる
524:デフォルトの名無しさん
20/10/10 17:08:45.97 hWE3VueY.net
複数人で開発するとき用ってことですね。
一人でWEBアプリ作って満足してる分には必要なさそうですね。
525:デフォルトの名無しさん
20/10/10 17:26:29.17 BjY8+1pb.net
ソースを公開する時に型は必須だな
複数人開発だと必然的に他人にソースを公開する訳だから型は必須だな
一人で開発してる時も未来の自分にソースを公開すると考えれば型は必須だな
526:デフォルトの名無しさん
20/10/10 17:30:06.10 BjY8+1pb.net
この理屈で行くと型が必要無い状況は使い捨てのコードを書く時になる
実際、実験的なコードを書くときはJavaScriptでサクッと書いてる
527:デフォルトの名無しさん
20/10/10 17:31:37.81 hWE3VueY.net
型を指定するのは実行速度のためだと思ってましたが違うんですね。
528:デフォルトの名無しさん
20/10/10 17:41:03.06 myt/k5c7.net
個人で、1ファイル、2, 300行程度のオモチャしか書かない奴にはいらないかもしれんな
複数人で、2ファイル以上のまともなコード書くなら、型は必須
「全てのfunctionが何かを引数にとって何かを返します。その『何か』はコードを読まないとわかりません」
じゃ困るだろ
529:デフォルトの名無しさん
20/10/10 17:46:03.97 hWE3VueY.net
複数人でも一つ一つ関数定義を確りして
コメントを残せば後から見返してもわかりそうな気がするのは
私がまだ未熟なんですね。
530:デフォルトの名無しさん
20/10/10 17:46:21.26 j
531:qYiciHv.net
532:デフォルトの名無しさん
20/10/10 17:56:33.59 myt/k5c7.net
>>514
でもそのコメント、人によって書き方バラバラだし、その通りに実装・使用されているかわからないよね
そのコメントが規格化されていて、その通りに実装・使用されていることを保証してくれるのがTypeScriptとでも思え
533:デフォルトの名無しさん
20/10/10 18:02:00.15 hWE3VueY.net
わかりました。TypeScriptの勉強をしてみます。
バックにはMicrosoftとGoogleがついてるみたいですので
安心して学習してみます。
534:デフォルトの名無しさん
20/10/10 18:14:27.06 myt/k5c7.net
せや
どこの馬の骨ともしれんバカではなく
MicrosoftとGoogleの天才たちを信じろ
535:デフォルトの名無しさん
20/10/10 18:32:27.26 ekvQuOcm.net
型情報による補完などのエディタの支援機能がないと書けない体になってしまった…
536:デフォルトの名無しさん
20/10/10 18:36:49.23 jkmsbl3z.net
>>504
これさ無茶苦茶なコード書いてる人がキレイなコードかけるようになるって点でTSって素晴らしいと思う
537:デフォルトの名無しさん
20/10/10 18:39:08.90 hWE3VueY.net
今日までエラーがでなければどんなコードでもいいと思ってました。
538:デフォルトの名無しさん
20/10/10 18:52:40.99 jqYiciHv.net
最終的にはそうだよ
同じ動きをするならユーザーにはどんなコードも同じ
開発側から見てどうか?ってだけ
539:デフォルトの名無しさん
20/10/10 19:08:51.73 hWE3VueY.net
開発側の立場で考えるとTypeScriptが必要になるんですね。
540:デフォルトの名無しさん
20/10/10 19:15:05.89 SwfxuCYC.net
>>503
なんか…Javascriptやってる人達ってこれくらいのレベルなんだよな…
今から始めるあなたはともかくとして、そのアドバイスしてくれたお友達のレベルもたかがしれてそう。
541:デフォルトの名無しさん
20/10/10 19:19:58.24 PAS52Dcu.net
Pythonなんかもっとひどいぞ
ただ色んなレベルの人がいるというのは新しい人が入ってきている証拠でもあるので、歓迎すべきことでもある
誰でも最初は初心者なんだしさ
542:デフォルトの名無しさん
20/10/10 19:42:13.27 w1paHL08.net
技術ブログ等で公開されているTypeScriptなコードの品質の平均はJavaScriptのそれと比べて高い。そういう意味でも使う価値がある。
もちろん例外はあるけどね
543:デフォルトの名無しさん
20/10/10 21:06:49.30 tFVag5PE.net
>>523
開発環境でリファクタリング機能の
性能に注目出来るぐらいになりましょう!
544:デフォルトの名無しさん
20/10/10 21:08:17.35 tFVag5PE.net
javascriptの言語仕様では
まともな物は作れませんので。
545:デフォルトの名無しさん
20/10/10 22:14:14.78 fDny8+f1.net
>>526
それはTypeScriptの採用によって品質が向上したというより、タイプ量やビルドの複雑さの多少の増大と引き換えに静的型付けを取るという
極めて正しい選択ができるだけの能力があるエンジニアが書いたからだろうね
546:デフォルトの名無しさん
20/10/10 22:15:54.62 6sdqDrQt.net
俺はC/C++からやってるけど、JavaScriptで型がなくって困るって事はないなあ。
ただ、形無し言語しかやったことないのなら、TypeScriptの方を薦めるけど。
(なお俺は生JSしかやっておらず、TSは触ってもいない)
Cみたいにメモリ領域を厳密に規定する為ならともかく、
Java以降の言語の型って、コンパイラで落とす為でしかない。
しかも、入口と出口で都合2回書いて、それが合っているかを確認するだけ。
実際、それでもタイポを落とせるので大変役に立つのは事実だけど、
型を間違ってエラーになるなんて事はほぼ無いし、有ってもスモークテストで確実に落とせる。
だから、言ってしまえば、スモークテストが通るまで捗るだけ。
この�
547:_、現状のC++やRustは空回りしてて、 コンパイラで落とす為に厳密に書く必要があり、結果的にやたら遠回りしてたりする。 俺が思うにあれは完全に本末転倒。コード構造が制限を受けてどうするんだよ? この点、TSは無駄に気負わず、 型の恩恵を受けつつ、面倒になれば省略出来る、位だから受けているのだと思う。 ただ、型の恩恵なんて上記の通り、スモークテストが通るまででしかない。 その後のメンテナンス性は、特にオブジェクト指向(OOP)を正しく適用出来てるかがキモになる。 ところが、JSではOOPは学べない。これはTSも同じだと思う。 周りの環境が酷すぎて、初心者~中級者にはOOPするメリットを感じられないから。 (HTMLも酷いが、ネイティブオブジェクトを拡張してもろくに動かないのも酷い) Javaや.NETみたいにびしっと作ってあれば、比較的小さな規模でも恩恵を受けられるが、 JSはそれらよりは断然高レベルプログラミングで、その分行数も少なく済み、 大体においてそんなに大規模にもならないし、OOPガッツリやる意味もほぼ無く全て済んでしまう。 だからその先、具体的にはソースコードが10k行を越えるまでは、 JSやTSは学習用言語としてはいいと思うよ。 その辺になってきて、一つの言語しか使えないってのもほぼ無いから、杞憂かもしれんが。
548:デフォルトの名無しさん
20/10/10 22:22:26.76 A0BwGHo+.net
何言ってんだこいつ
549:デフォルトの名無しさん
20/10/10 22:29:28.83 xMQUNHWy.net
OOPなんて使えて当たり前。OOPを神格化してる奴でOOP以外の技法も使いこなせてるヤツ見たことない。
それにOOPの価値はコードの大小に依らない
550:デフォルトの名無しさん
20/10/10 22:35:39.32 myt/k5c7.net
俺は困らないからJSでいい論は全てゴミ
想像力の欠けた引きこもりアスペが書いた妄想
これはガチ
551:デフォルトの名無しさん
20/10/10 22:36:40.03 6sdqDrQt.net
TSスレだから、TSマンセー、型マンセーな奴の echo chamber になってるだけだぞって事。
TSは悪い言語でもないが、お前がら思ってるほどJSも酷くない。
だから数あるAltJS、勿論TypeScriptもそれに含まれるが、それでもJSを殺しきれない。
型で恩恵受けるのは、スモークテストまでだろ。
そもそも変数名みれば型なんて自明だし、そうじゃないのが問題。
そして関数を小さく、というのがほぼ最強で、そもそも規模が小さければ変数の型が分からないなんて事はない。
型に囚われてる奴は、型の先、つまり、型が有ろうがなかろうがどうにもならない世界が見えてないのだと思うよ。
この意味でRustもリソースリークを気にしすぎ。そもそもリークなんてしないし、面倒なら最初からGC使えばいいだけ。
TSはこの辺変に気取ってないからいい。
552:デフォルトの名無しさん
20/10/10 22:43:14.81 A0BwGHo+.net
まあ自分のコードだけで完結する世界で閉じこもってる分にはそれでいいんじゃない
553:デフォルトの名無しさん
20/10/10 22:43:43.59 myt/k5c7.net
>>534
> そもそも変数名みれば型なんて自明
ハンガリアン信者の方ですか?
こんなこという奴の久々に見たわ
> そもそも規模が小さければ変数の型が分からないなんて事はない
ほんと自分の都合のいい側面しか見えてないよな
俺は困らないからJSでいい論は全てゴミ
想像力の欠けた引きこもりアスペが書いた妄想
この通りやンけ!
554:デフォルトの名無しさん
20/10/10 22:48:34.65 6sdqDrQt.net
>>532
OOPを神格化している奴がゴミなのは認める。Javaの連中が特にそう。
そして俺はそうじゃない。
ただな、DOMとかその辺が酷くて、OOPの恩恵を小さいコードでは得られないのはOOPを学ぶ上では痛いと思う。
Javaみたいにたった50行のコードにOOP強いて余計に意味不明になるのも問題だが、
自作コードのみでOOPの恩恵が受けられるのは3k行程度以上
555:必要で、 そこまでOOPを囓れないでいるのもまた問題。 正直、ここにいるお前らの半分以上はOOPを正しく理解出来てないと思うよ。 ただ、それでも書けるところが良いところなんだが。 OOPは大規模コードの整理術であって、そもそも大規模化しないのならそれが大正義だ。
556:デフォルトの名無しさん
20/10/10 22:57:06.91 6sdqDrQt.net
>>536
それはそもそも読み方を間違ってんだよ。
関数なんて大体20行程度だし、問題になるにしてもI/Fだけ。
ただそれ以前に、俺はサイトのmimnify済みのJSでも割と読めてしまうことに気づいてしまった。
「訳の分からないことをやってないこと」が重要で、そうじゃなければ追えるんだよ。
だから、初心者のコードほど読めない。これは事実。
557:デフォルトの名無しさん
20/10/10 23:00:39.67 myt/k5c7.net
>>538
世界中のプログラマーが関数なんて大体20行程度で訳の分からないことをやってないコードを書いてくれる理想郷にお住まいなのであれば、TSはいらないだろうね
558:デフォルトの名無しさん
20/10/10 23:10:25.88 6sdqDrQt.net
>>539
逆だろ。そういう理想郷を作るようにお互い努力するんだろ。
そしてTSはJSよりはそれを目指していると思うが。
関数が20行ってのはGoogleかnpmのコーディングルールに有ったはず。
コードレビューする時に「パワポ1画面に入らないような関数を書くな」だった。
実際、そこまで短くすれば、訳の分からない複雑なことは出来なくなるから、確かに効くんだよ。
559:デフォルトの名無しさん
20/10/10 23:25:22.20 BjcbKuib.net
TS は、もっと後でよい
Ruby 3.0 で型推論が入ることになったけど、作者のMatz が、
型を入れると難しすぎて、初心者が簡単にプログラミングできなくなると言ってた
型はプロ向き。
型があると、初心者のfirst choice にならない
560:デフォルトの名無しさん
20/10/10 23:26:05.68 OZkIKLkD.net
いや型がある方が楽やろ、ガイド付きやで?
561:デフォルトの名無しさん
20/10/10 23:26:47.91 OZkIKLkD.net
コンパイルエラーで検知できずに動かしてみるまでわかんないとか…
562:デフォルトの名無しさん
20/10/10 23:37:08.35 6sdqDrQt.net
ついでに言っておくと、多分TSの「型」ってのはC++やRustの連中の「型」の範疇には入らない。
多分、連中からすると「型道」から外れてる、邪道だ、と見えると思う。
それは認識しておいた方がいい。
ただ、俺はむしろその方がいいと思っている。
C++のテンプレートなんて、
「これって型がなくてダックタイプでよければさらっと書いて終わりでしたよね?」ってのが多すぎる。
MSはそこら辺、極めて現実的でいい。
あと、既に言われているが、JSerなんてこの程度、というのは当たっている。
具体的に言えば、実力を過大評価している勘違い馬鹿が多い。
ただ、それは界隈のオンボロさと、楽勝さによっているのであって、環境を共有しているTSでも同じだよ。
とはいえ俺はこれも良いことだと思っている。
つまり技術レベルが低くても達成出来ることが(見た目)大きいわけだから。
だからCとかの連中は、なんでJSerがあんなに馬鹿でも世界が回るのか、
それはつまり、界隈のシステムが上手く出来てるからなんだけど、その辺学ぶべきだと思うよ。
563:デフォルトの名無しさん
20/10/10 23:43:46.38 6sdqDrQt.net
>>541
難しくはならないが、煩雑にはなるんだよ。
そしてその煩雑さを利益が上回る為には、最低限ある程度の規模が必要で、
それは最初の最初の初心者が書くコードの規模(精々100行)では全然足りない。
だからってスクリプト言語で調子に乗ってガシガシ書いた後に型が欲しくなる時は確かにある。
その辺、従来は対応出来なかったが、TSはそこを上手く掬い取れた。
564:デフォルトの名無しさん
20/10/10 23:50:21.71 TSALDtkC.net
JavaScriptで昔書いた3000行のコードをTypeScriptに直しているんだけど
いやまあ型は便�
565:�と思えるいろんな発見があったわ;;
566:デフォルトの名無しさん
20/10/10 23:50:29.75 hWE3VueY.net
現在もっとも人気と将来性があって最強と言われる
Pythonに型がないのはどういう理由なんでしょうか?
567:デフォルトの名無しさん
20/10/10 23:56:23.03 hWE3VueY.net
パイソンはクラスは使えるようですね
568:デフォルトの名無しさん
20/10/11 00:05:58.83 rXA2CZZq.net
>>547
Pythonが受けているのは、馬鹿でも書けるから。これに尽きる。
Cだと、PCの物理的構造をある程度知ってないと理解しにくい面があるから。
ただ、Pythonが将来性があるかは疑問だと思う。
使われ続けるという意味では確実だが、プログラマを目指すのにいいか?と言われると微妙。
俺はPythonやってないが、最近かじろうとして、止めた。
String.replace(regexp)がなくて、RegExp(str)しかなく、ああこりゃ駄目だ、と思った。
なるほどPythonではクソコードしか書けない、というのは納得だ。
しかも3.0になってずいぶん経つのに、え?まだこんな所で揉めてるの?みたいな制限事項多すぎ。
ただまあ、明らかに君はそれ以前なのだから、グダグダ言わずにさっさと始めるべきだよ。
君のレベルなら、TSでもJSでもPythonでもどれでもいいと思うよ。
Pythonのクソさが分かるようになるまでに2年ほどはかかるだろうし。
569:デフォルトの名無しさん
20/10/11 00:11:31.57 rXA2CZZq.net
>>548
クラスが使える=オブジェクト指向が出来る、という意味では、
最近のプログラミング言語でそもそもOOP出来ないものは存在しない。
それほどまでにOOPは認められた存在だと言うこと。
ラムダも同様だが。(なおPythonのラムダには制限あり)
だから最近の言語はどれもこれも同じだ!と言われていて、実際そうなのだが、
敢えて違う言語を!とやったのがGo。
ただしGoは別方向にかなり糞なので初心者は止めた方がいい。(と思う)
ただ、実際はGoも結構初心者受けしている。特に形無しスクリプト言語上がりには。
570:デフォルトの名無しさん
20/10/11 00:24:04.47 n4TOsjKe.net
Pythonは 機械学習関連のライブラリが充実していて 最強の地位は10年後も20年後もおそらく変わらないだろう とプログラミングに詳しい知り合いが言ってました。 マシンスペックも上がってきているので Python のようなスクリプト言語でも 十分に実行速度が発揮でき益々 需要が伸びる可能性が高いと聞きましたが。
571:デフォルトの名無しさん
20/10/11 00:25:02.84 vIhtxp0O.net
>>547
mypyというものがあってだな
572:デフォルトの名無しさん
20/10/11 00:34:52.32 y3zg5lZo.net
スレチ
573:デフォルトの名無しさん
20/10/11 00:49:43.03 rXA2CZZq.net
>>551
ならその知り合いに聞けよ。ただそいつはヘボだと思うが。
Pythonが強いのはライブラリが揃っているからだが、今のところ実行速度が致命的に遅い。
それはCPUやGPUの性能向上程度では何ともならない。
機械学習なら結局のところは何回回せるかが勝負で、C比80-800倍遅いのだから話にならない。
だからCythonなんて物も出てくる。
ただしアルゴリズムを頻繁に書き換えるとなると違う。
ちゃっちゃと書き換え、夜流して朝結果を回収、夕方までにプログラムを変更してまた夜流す、
という繰り返しなら、「新しいプログラムがいつ出来るか」が勝負となり、当然スクリプト言語の方が有利だ。
ただ、これが出来る学生なんてなかなかいないと思うし、そこまで行くのなら多分Cも普通に使える。
そもそも機械学習ならそんなにアルゴリズムも変えないはずだし。
だから今でもガチの計算機工学科ではCもやってるだろ。
Cだと1時間で結果が出るのにPythonだと3日かかります、では研究の進捗も全然違ってしまう。
だから用途に合わせて使い分けることが必要で、
はっきり言ってCも大して難しくもないからそういう奴等はCを最初から学ぶようになってる。
PythonやRuby界隈が高速化を目指さないのは俺には完全に疑問だ。
何だかんだで今後とも速度は重要であり、正義だ。
Rubyなんて死にかかってるが、JSと同程度の速度が得られれば、復活するとも思っている。
ただ、Matzもその周りもそれをしようとしないんだな。クソ言語なんてもう要らないのに。
TSはその点、JSの実行速度と、スクリプト言語の弱点、
「調子乗って書いてたらグダグダになってきてヤバイっす」を型付加により多少は緩和出来る、という点でかなり立ち位置はいい。
しかもJSも今のところ死ぬ感じはないから、TSも勿論死なない。
一般的にはJSerは次第にTSerになっていくと見られているが、これも概ね正しいだろう。
確かにTSは駄目な点がない。
(界隈の駄目な点をJSからモロに受け継いでいるが)
574:デフォルトの名無しさん
20/10/11 00:50:50.85 vIhtxp0O.net
型無し糞言語は死あるのみ
型推論でスマートに型サポートを受けるのが今のトレンドだよ
575:デフォルトの名無しさん
20/10/11 01:01:08.81 sfgrEAk/.net
質問ですが
interface IPoint {
x: number;
y: number;
}
があるとして、(例えば)一致判定関数を書く場合、
function isequal(p1: IPoint, p2: IPoint) { return (p1.x == p2.y && p1.y == y2.y); }
function isequal<T extends IPoint>(p1: T, p2: T) { return (p1.x == p2.y && p1.y == y2.y); }
はどっちが良いの?
どっちもプロパティー{ x: number, y: number }を持つ任意のオブジェクトを受け入れるので同等に見えまつ、
576:デフォルトの名無しさん
20/10/11 01:02:20.20 sfgrEAk/.net
戻り値を忘れたorz
: boolean
型推論って便利ですよね、、、
577:539
20/10/11 01:27:53.11 B+MSoWxK.net
YouTube で有名な雑食系エンジニア・KENTA は、
初心者が進む道を、サーバー側言語のRuby → Go を王道としてる
Python, PHP, JavaScript などを絶対に言わない
初心者のfirst choice としては難しすぎる。
挫折確率が高すぎる
ただ年末に、Ruby 3.0 で型推論が入るから、
KENTA も、この方針を変えるかも知れない
大事件勃発!
Ruby on Rails に頼っている、すべての学校の方針が変わってしまう
ただ、first choice がGo と言うのは、絶対に無理
578:デフォルトの名無しさん
20/10/11 01:46:46.27 +wOaiLh4.net
>>556
この場合は多分同等なのでシンプルな前者で良い
後者はTを他の箇所(戻り値やコールバック関数の引数など)でも使う場合に適していることがある
例えば
function double<T extends IPoint>(p: T): T {
p.x *= 2;
p.y *= 2;
return p;
}
とか
function check<T extends IPoint>(p: T, validator: (p: T) => boolean): void {
if (!validator(p)) { throw new Error('...'); }
}
とか
ただしこれらの場合でも必ずしもextendsが適しているとは限らないので注意(特に上の例はかなり適当なので)
579:デフォルトの名無しさん
20/10/11 06:43:46.76 vDn4Pmub.net
Pythonは型を書いてもインタプリタがそれを無視して実行してくれる
高速に実行したければPyPy使えばネイティブコードに近い速度で実行出来るしmypyで型チェックも出来る
JavaScriptで型を書くと単に構文エラーになるだけだが、その内無視して実行してくれる様になるだろう
そうなったらTypeScriptは要らなくなる
580:デフォルトの名無しさん
20/10/11 07:10:15.21 qONvW7Si.net
妄想おつ
581:デフォルトの名無しさん
20/10/11 07:22:42.40 vDn4Pmub.net
Pythonみたいに動的型言語に型アノテーションを追加する事が主流になるだろう
Union型は動的型だから出来る事で、完全に静的型にするとC++みたいになってしまう
動的型+型アノテーションは良いとこ取りで、プロから初心者まで皆が満足出来る
582:デフォルトの名無しさん
20/10/11 07:34:29.67 6reX+khV.net
Pythonは10年前にやったときは凄い言語機能だと思ったけど、それからあんまり進化しなくて今はJSにすら言語機能的には劣ってる。Pythonの良いとこ他の言語も取り込んじゃったからね。
でもそれとライブラリが充実してるってのは別問題で、このライブラリの充実っぷりがJS|TSにもあったら天下取れるのになぁと思う。
機械学習はライブラリの最適化がキモで言語の速度なんてほとんど関係ないし
583:デフォルトの名無しさん
20/10/11 08:43:37.68 AhI6YFfN.net
なんどもコードの書き換えが必要な機械学習において
Pythonのような可読性にすぐれ、少ないコードで実行できる言語はが必要不可欠なのよ。
Cythonを使えば実行速度もC/C++と変わらないしね。
JavaScriptはTypeScriptとして生き残ると思われる。
584:デフォルトの名無しさん
20/10/11 08:44:44.80 AhI6YFfN.net
>>558
そのYouTubeはPythonとJavaScriptで作られているという皮肉
585:デフォルトの名無しさん
20/10/11 08:59:02.53 rXA2CZZq.net
>>562
最近の初心者がすぐ「俺がやってる言語スゲー、俺スゲー」なポジショントークに走る理由が分からん。
Pythonが良かろうが悪かろうが、お前の実績でもなかろうに。
結局のところ、「○○言語スゲー」をやってる奴は、「他言語なんて絶対学びたくないマン」であって、
それを正当化する為に言い訳をしているようにしか見えん。
それは549の「知り合い」も同じ。
ただ>>556が典型的な「型の問題点」で、
規模的に「見りゃ分かるだろ」な場合でも、型あり言語は型を書くことを強制され、
結果的に煩雑なコードになってしまっていた。
それ、JSで
function isEqualPoint(p1,p2) { return (p1.x === p2.x && p1.y === p2.y); }
だったら、悩む必要もなく、その先にさっさと進めてただろ、という話。(※)
普通の頭してたらこれで十分だ。
ちなみに(メソッドではない関数で)isEqualは短すぎ。
isEqualPointはお前らが大嫌いなハンガリアンだが、どう見てもPointを受け取る前提で、そうじゃなきゃエラーだと分かる。
それを型を書いてコンパイラにやらせるのがTSで、目で見て落とすのがハンガリアン。
ただ、コードの精度を上げたいなら併用すべきで、
形無しのisEqualというのは.NETみたいにisEqualインタフェースを全部の型に対して供給し、
isEqualを持っている型はこれ使えます、てな事をやるために使う。
ただこれは.NETは世界の全てがOOP前提だから出来るのであって、JS界隈ではかなり無理。
そしてそれ以前に、isEqualはPointのメソッドとして実装すべき。
メソッドであればそもそもPoint以外を与えようがなくなるし、見た目もハンガリアン同様にエラーを検出出来る。
そしてインタフェースへの拡張も見えてくる。
どうしても野良関数にしたければ、ハンガリアンにしておく方が無難だと思うが。
なおOOPの問題点は根本的にここら辺で、
この程度のどうでもいい規模しか書けない初心者にも無駄にいちいち考えることを強いて手を止めてしまう。
このレベルならグダグダ言わずに何とでも書いてどんどん先に進んだ方がいい。
どうせ今書いてるコードなんてゴミで、後から使える事はない。
586:デフォルトの名無しさん
20/10/11 08:59:27.04 rXA2CZZq.net
少し遠回りしたが話を※の時点に戻すと、
だから「全部について型を書け」というのは少々煩雑で、型あり言語は型推論で
587:型を書かなくて良い方向に動いてる。 逆に、形無し言語は型をアノテートすることで、コンパイル時に落とせる方向に動いてる。 結果的に、どっちも同じような状況になりつつある。 落としどころは多分、C#の「ローカルは型推論、それ以外は型を書け」がまあ妥当なラインなのだろう。 だから初心者でこの辺の塩梅が分からないのなら、C#から入るのもありだと思うけど。 現実的にバランスが取れた仕様にはなってる。 >>563 JSが取り込んだPythonの良い所って何? そんなの初耳だが。 そもそもPythonが褒められてる点なんてマジで何一つないと思うが。 (ただし俺は10年も使ってないので歴史的経緯はほぼ知らんが) JS|TSが天下を取る為に必要なのは「同期」だよ。 asyncとかじゃなくて、普通の「同期」の方が分かりやすいし、実際スクリプト言語が担当する分野ではほぼそれでいい。 c10k問題等には非同期が有利なのは事実だが、見た目の分かり易さは「同期」の方が断然いい。 「それ、同期だったらそもそも理解する必要すらなくて、上から順に実行される、で済みますよね?」が多すぎる。 ただ、「非同期」は最早宗教だから、「同期」を入れることはないのだろうけどね。 「同期」が入れば、CPUリソースが厳しいサーバ側のPHP/Ruby/(ほぼいないが)Pythonの半分ほどはNodeに移行するだろう。 (実際、Goがその界隈で流行ってるのも、大した手間をかけずに快速が得られるからであって) また、普通のスクリプト業務、つまりPythonが蔓延っている分野でも、 Python同様に簡単に書け、速度は16倍なのだから、当然普段使いする奴が出てくる。(というか俺がそれ欲しい) そうすれば、ライブラリも充実していく。 「同期」がないから普段使いしにくいのがとにかく問題。 逆にPythonは実行速度が問題で、現実的な文句はほぼこれに尽きる。 だから彼等が何故高速化を目指さないのかは俺には本当に謎。
588:デフォルトの名無しさん
20/10/11 09:13:49.37 /RVlCgv+.net
このおっさん長文書く割に知識浅いな
589:デフォルトの名無しさん
20/10/11 09:15:26.14 xz6PduLx.net
>>565
あれPythonで作られてるから進化が遅いんだぞ
外向きにはPythonで問題ないって強弁してるが完全に負債化しちゃってる
Pythonで作ったWebサービスあるある
590:デフォルトの名無しさん
20/10/11 09:29:24.51 AhI6YFfN.net
時代についていけない老害エンジニアがC/C++を必死に推してるように思うのだが
591:デフォルトの名無しさん
20/10/11 09:29:47.66 vIhtxp0O.net
>>568
浅いというか個人 or 小規模開発しかしたことなさそう
592:デフォルトの名無しさん
20/10/11 09:36:16.20 AhI6YFfN.net
Pythonの速度が遅いと言ってるのは情弱
Cで書いたライブラリに受け渡せばC言語の速度で実行できるし
Cython使えばPythonのコードほぼそのままC言語の速度がでる
Pythonで困るのはGUIくらいだろ?
593:デフォルトの名無しさん
20/10/11 09:40:52.87 sfgrEAk/.net
継承とジェネリクスが役割が被る領域において
TypeScriptではどっちの書き方がメジャー(もしくは効率的)とされているのかわからなかったのです><!
>>559
レス㌧クス、
わかりた、
594:デフォルトの名無しさん
20/10/11 09:45:09.23 sfgrEAk/.net
次の質問なのですが、
タイプガードとか書くときにクラス(やハッシュ)にプロパティーが有るのか無いのか調べると思うのですが
つぎのどっちの書き方が良さげ?
(1) 'someProperty' in foo
(2) foo.someProperty != undefined
595:デフォルトの名無しさん
20/10/11 09:45:54.29 sfgrEAk/.net
なんとなく(2)の方が早いのではないか、という気がするのですが気のせい??
596:デフォルトの名無しさん
20/10/11 09:57:22.72 rXA2CZZq.net
>>572
俺もCのDLLをスクリプト言語から呼ぶ、というのが現実的な解だとは思う。
ただ、Pythonの問題はそこじゃない。
演算を変えたい場合は結局Cを書く羽目になるから、結局Cも出来ないと駄目。
そしてCは仕様が小さいので、本気で正しく学べば簡単な部類だ。
GUIは今は現実的にHTMLがダントツで良く、何から何までWebアプリ化してる。
なら今ならElectronの方が相性がいい。当然JS/TS。
サーバ用途でPython使ったら大体は速度の問題にブチ当たるが、
これは「お気楽に書ける分遅い」というスクリプト言語の特有の問題であり、Rubyも同様で、回避手段がない。
(Nodeはgoogleの努力で例外的に異常に速いだけ)
だからPythonは「何一ついいところはないが、何も悪くもない」という、ある意味「絶対的な2番手」だ。
だからこそ「絶対他言語を学びたくないマン」はこれに拘り、ポジショントークを繰り返す。
ただ、今時の言語なんてどれも似たようなもので、実際そこに拘る理由もなく、普通の奴は易々と言語の壁なんて飛び越えていく。
普通はこちらを目指すべきだと思うけど。
PHPもクソと言われて久しいが、いまだに蔓延っているのは、あの用途では絶対的に便利だから。
それはjQueryも同じ。
597:デフォルトの名無しさん
20/10/11 09:59:21.79 vIhtxp0O.net
>>574
無料相談所じゃねえんだぞ調子に乗るな
(2)にしろ
(1)は型の保証までしてないから最後の手段
あとinterfaceはライブラリなど汎用的なコードに使うもの、普段はtypeを使え
598:572
20/10/11 10:02:33.58 sfgrEAk/.net
ていうか自己解決しますた、
e: Event を e: MouseEvent として扱ってよいか(ダウンキャスト可能か)どうかを
確認するとき、(1)の書き方でないと
MouseEventにあってEventに無いプロパティー
(e.offsetXやe.offsetY())の有無の判定が書けませんぬ、
599:デフォルトの名無しさん
20/10/11 10:15:47.58 AhI6YFfN.net
>>576
機械学習の勉強してみ。演算やアルゴリズムなんて二の次 三の次だから。
とにかく何度もコードを書き換えてひたすらパラメーターと変数の調整作業になる。
言語の実行速度よりコードの記述速度の方が大事になる。
この時はじめて「Pythonさん。なめててごめんなさい」って言いたくなる。
600:デフォルトの名無しさん
20/10/11 10:30:46.60 rXA2CZZq.net
>>579
パラメータの変更しかしないのならそうだろうとしか。
俺は別にPythonを使うことが悪いとは言ってないぞ。
俺はJSを大変気に入っているが、それは「手抜きで書けるわりに速い」からだ。
だから俺はJSからCのDLLを呼びたいんだよ。
それがお前の場合はPythonなだけだろ。別に不思議でもないよ。
601:デフォルトの名無しさん
20/10/11 10:37:24.45 AhI6YFfN.net
>>580
PythonはCythonを使えば
ほぼPythonコードのままCのライブラリが作れるんだよ
速度はCで記述したものとほとんど変わらん
602:デフォルトの名無しさん
20/10/11 10:42:41.64 rXA2CZZq.net
>>574
それはJSでは議論し尽くされた質問。多分ググッた方がいい。
会社で書く場合は多分コーディングルールでどっちにするか決まってる。
プロパティのありなしのチェックだけなら(1)の方が原理的に速い。
ただしJSの場合はundefinedという値を設定出来るので、その場合は(1)も(2)もアウトだが。
これはJSの仕様バグだが、この辺含めてJSは厳密な型管理には向いてない。
そもそも型無しなので当然だが。
>>578
そもそもダウンキャストが必要となってる時点でOOP的には邪道。
多分それは無駄にアップキャストしてるから。
OOP初心者あるあるの、張り切って無駄にOOPして余計に複雑になってるケースだと思うよ。
それも含めて頑張れでしかないが。
603:デフォルトの名無しさん
20/10/11 10:52:20.91 rXA2CZZq.net
>>581
ならお前はPython/Cythonで一生暮らすでいいだろ。
俺はC使えるからCythonを使うことはないし、
Pythonも色々糞だからJSで�
604:マむところはJSで行く。 だからCscriptはそこそこ良かったのだが、MSはこれを捨ててPowerShellという別糞言語押しなのは残念。
605:デフォルトの名無しさん
20/10/11 10:59:25.49 kZXFoyze.net
>>549
>俺はPythonやってないが、最近かじろうとして、止めた。
>String.replace(regexp)がなくて、RegExp(str)しかなく、ああこりゃ駄目だ、と思った。
>なるほどPythonではクソコードしか書けない、というのは納得だ。
馬鹿ですね判ります
606:デフォルトの名無しさん
20/10/11 11:08:21.39 kZXFoyze.net
>多分それは無駄にアップキャストしてるから。
型消去が必要な場面なんていくらでもあると思うが。
そもそもダウンキャストって動的な型判定でしかないんでOOPとは直交する概念だよな。
607:576
20/10/11 11:23:42.67 sfgrEAk/.net
自己解決しますた、2
e: EventのMoveEventへのダウンキャスト可能性判定は
if (e instanceof MoveEvent) { ... }
で逝けるっぽい
こう書いたとき、VSCodeではブロックの中でe: MuseEventとしてのインテリセンスがばっちり利くスゲー;;
さらにいうと、
URLリンク(developer.mozilla.org)
の書き方をすると、addEventHandler()の宣言とラムダ式から型推論するらしく
イベントハンドラ内に入った時点で勝手にMouseEventとして扱われる(スゲー)^2
608:576
20/10/11 11:25:20.20 sfgrEAk/.net
>>582
>そもそもダウンキャストが必要となってる時点でOOP的には邪道。
HTML5とかを決めているmozilla.orgに言って、
ホスイ
609:デフォルトの名無しさん
20/10/11 11:26:44.35 rXA2CZZq.net
>>584
String.replaceとRegExp.exec(str)は明確に用途が異なる。
だからそのどちらを使ったかで何を目的にしてるかをコード上に残せる。
Pythonはそれが出来ないから糞、というだけ。
どうやらPython教の「そのやり方は一つであるべき」が根本的にある。
これが「数ある中からそれを選んだ、それを持って意図を残す」俺と決定的に合わない。
なおRubyも同様に「いろんなやり方があるべき」であり、Pythonはプログラミング言語の中ではかなり異端だと思う。
だからこそ受けている、というのはあるらしいが。
なおJS、String.search と Regexp.test 等、大体においてその状況では交換可能なメソッドは多々あるし、
Array.map/forEach/filter/reduceも、無理矢理やれば大体交換可能だ。
これについては俺は => はクロージャ無し、つまり外変数を掴めない仕様にするべきだったと思う。
そうすれば => で与えている限り「無理矢理交換」は出来なくなり、コードも読みやすくなるし、エラーも文法的に落とせた。
現状では「無理なことをしてないか目で確認」するしかなく、これは型アノテーションではどうにもならない。
だから目で落とすハンガリアンを馬鹿にしていて、でも => の仕様不備には全く文句を言わないのは、
同様にお前らも単なる馬鹿かポジショントークでしかないからだよ。
実際、 => で与える関数で外変数を掴まなければならないケースなんて半数以下だし、
その場合は function と長々と書く、でよかった。
610:デフォルトの名無しさん
20/10/11 11:37:03.05 rXA2CZZq.net
>>587
それはその通りだが、そもそもHTMLの仕様がOOP前提ではないので継承構造が綺麗になってない。
それを無理矢理それっぽく見せかけているのがHTMLElement(というかDOM)だが、
ちょこちょこ例外的なのがあって統一的に扱いきれない。
多分割と早い段階で無理だと諦めると思うよ。それも含めて頑張れだが。
mozallaが悪いわけではなく、OOP前提で作られてない物を載せ直そうとしてるから無理があるんだ。
なら不整合な古い仕様はばっさり切っていった方がいいと思うが、それは互換性の問題で切れないらしい。
だから、今後とも直ることもないよ。
611:デフォルトの名無しさん
20/10/11 11:39:39.85 ZGWQTXgj.net
>>572
PythonはOO機能が中途半端で型システムも貧弱だからアプリケーションのコアとなるドメインモデルの実装には使われない
Cythonでドメインロジック書くのはもっと非現実的
機械学習やデータ分析のようにコアとなる部分を汎用的にCでライブラリ化できるような用途には適してる
NetflixやUberのようなテクノロジ先進企業がアプリのコアからPython外して
機械学習を含むデータ分析系かシステム管理系に絞って使ってる理由
612:デフォルトの名無しさん
20/10/11 12:42:35.57 6reX+khV.net
>>588
外変数を掴まないArray関数?
センス無いなぁ。やっぱあんたOOPしかできないでしょ
613:デフォルトの名無しさん
20/10/11 12:57:09.09 AhI6YFfN.net
>>563
記述が簡単。ライブラリが充実。これが最強の所以だよ。
コードの学習コストと記述に時間がかからない分、他に時間をさける。
機械学習、データ分析、科学系でPythonの最強はしばらく続くだろう。
今話題のディープラーニングにおいてもPyTorchが最強の座に着こうとしている。
大企業が多額の資金を投入してね。
JavaScriptもネットでは必須なのでPythonと肩を並べる言語になるだろう。
この2つを極めたものだけが将来生き残れる。jabaは10年後には消えてるだろうな。
614:デフォルトの名無しさん
20/10/11 12:58:10.87 AhI6YFfN.net
Javaねw
615:デフォルトの名無しさん
20/10/11 13:01:56.22 rXA2CZZq.net
>>591
外変数を掴む前提ならreduceは全てforEachで代替出来る。
逆に言うと、わざわざreduceを入れたのは、見た目immutableにしたいだけ。(戻り値をconstで受けられる)
しかし現状では与えた関数が外変数を変更していない、という確証が「文法的には」ない。
つまり、「見て判断」するしかない。
この辺がハンガリアンを馬鹿にしているお前らが理解出来てないところだ。
=> がクロージャ無しなら、
const tmp = arr.reduce( => );
において、tmp以外の変数に変更がないことを文法的に保証出来た。
これをせずに、immutableだあ、型でエラーが落とせるだあ、なんて言ってる時点で意味ねえ、というだけ。
もっと効率的にエラーを落とせる仕様は有ったって事だよ。