TypeScript part3
■ このスレッドは過去ログ倉庫に格納されています
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/ >>232
デフォと言いたいが
arrowParens: "always",
semi: false,
trailingComma: "es5",
のみ付けるのが多い(気がする) semi: false,
だけは本当に極稀に問題になるから、設定しなくてもいい
目障りだから俺は設定するけどね const x = { a: 'b' };
この x の型は { a: string } になってしまうみたいだけど、 { a: 'b' } 型にする方法ってないんでしたっけ?
TypeScript 3.5です。 const x: { a:'b' } = { a: 'b' }; const x = { a: 'b' as 'b' }; もいけるみたいだけど冗長だなぁ。 デフォルトで全部 as const にするオプションとかあればいいのに anyを許すルールにするっつったら
「でもapiからくる値なら全て型定義できますよね?」
って言われたことにものすごい疲れた
完璧なappなんかねーんだよ!!!ってキレそうだったわ unknown確か途中で足されたよな。最初から入れとけおもた。 >>247
許容派です。
再帰処理とかをまともに型付してたら、辛すぎる。。
ちなみに
const arr = []
で、never[]型になるのがしんどい。
設定でany[]型にならないでしょうか・・? てかリテラルの [] が never[] になんかなる? eslint が v6.0.0 になったら @typescript-eslint/parser が読み込めなくなった
とりあえず issue をみて ./node_modules/@typescript-eslint/parser/dist/parser.js で
require("eslint/lib/util/traverser")
↓
require("eslint/lib/shared/traverser")
でやり過ごしてる この研究によるとTypeScriptは最もバグ発生率が低い言語なんだけどその理由とか体感とかありますか?
https://web.cs.ucdavis.edu/~filkov/papers/lang_github.pdf
>TypeScript −1.32 (0.40)∗∗ −2.15 (0.98)∗ −1.34 (0.41)∗∗ −0.34 (0.07)∗∗∗ コンパイラにバグが無い
コンパイル中にコードのバグは発見出来る
アルゴリズムのバグは知らんがな TypeScriptで書いたプロダクトにバグが少ないのか、TypeScriptコンパイラにバグが少ないのか、どっちよ? あと今土器pdfなんかで出すなよボケカス
日本語翻訳使えないだろが >>254
TSで書かれたソフトウェアにバグが少ない
そのPDFによれば調査対象のメジャーな10種くらいの言語の中で最も少ない C#と大して変わらんのにバグが少なくなるって根拠がよく分からん
JavaScript上がりのプログラマが使うことが多いから良く訓練されているってのが考えられる根拠だなw ユーザのリテラシが高いが後押ししてるのはありえそうだな
phpあたりは言語もユーザもガイジだからかわいそう JavaScriptは初心者が触るには最悪の言語と言っても過言ではないないから、ありとあらゆるバグを出して大変な目に遭ったプログラマがTypeScriptを使うことになると、バグも少なくなるだろうなという意味だよ よくよく読んだら、ほんとは一番バグが多かったとかいうオチ?? スレッドがないとかポインタがないとかでできないことがある分バグも減るでしょ >>263
できないことだらけにしたGoさんはどうなりましたか・・・? >>264
Web画面なんて壊れてても気にしないからコミット取り消さないし
そもそも画面実装とかサーバに比べて問題の範囲が限定的でたいして難しくないだろ
最初から扱ってる問題が言語ごとにちがうんだ
この表ってか論文で一緒にしてるのおかしい
あ、型なし言語はあかんと思います 確かにCとかC++は基礎的なソフトに使われるから
僅かなバグも絶対に許されないとこありそう
それ以外にポインタ使ってるからってのもあるだろうけど >>266
動画の新しいエンコーダ作るとか、プログラムじゃなくて数学のレベルを求められる仕事は置いといて、
webならフロントの方がよっぽど複雑じゃない?
バックなんて同期処理でお決まりのレールに乗ってダラダラ書いてくだけだし。
複雑でパフォーマンスが要求されるpwaとか、typescript無かったら絶対に完成する気しないわ。
カオス過ぎる js/tsだけどダイアログとか出すときに
モードレスにした方がユーザーには使い易いのに
バグが増えそうだからモードレス禁止ってことで
全部モーダルで造らされたことがある 型の判定の正しい手順ってどうだっけ?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;
} そりゃTypeScriptだって魔法じゃないんだから。
すごいのは外部から渡された得体の知れない値をこうやって動的に型判定して
それを静的な型の世界に持ち込めるところ。 ts知らないけど処理系がロード済みの型一覧を取得できないの >>270
この返り値、なんていう記法?
というか、なぜこんな書き方が必要なの? user defined type guard function でググれ。 >>269
jQuery, jQuery UI のダイアログを使えば?
モーダルが多いような気がする /* 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 })),
}
}
type ReduxDispatchProps2 = ReturnType<typeof mapDispatchToProps2> その暗黙の推論を禁止するルールなんだから普通に考えたら無いよね。
型付けが難しい場合があるのはわかるけど、eslint-disableじゃだめな理由は?
全体として入れているチェックの例外を設けるなら後からその箇所がわかるように
しておかなきゃ困ると思うが。 >>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 にしたくない
というお気持ち
やっぱ無理ッスかね { allowExpressions: true } >>284
既にこれで設定してます
---
"@typescript-eslint/explicit-function-return-type": [
"error",
{
allowExpressions: true,
allowTypedFunctionExpressions: true,
},
],
--- Nest.js使ってサーバサイドもts使ってる人いる? むしろ整合性が求められるサーバーサイドでこそ活躍する tslintが年内収束ってことなんでeslint移行を試しているが、まだ微妙に使いづらいな。 Svelte 試してるんだが TS にできない……
eslint-config-prettierがほぼ使用不可になるのもしんどい vs2019に入れるときはどうしたらいいですか?
色々やってて、2017には入ったけど、HelloWorldが正しく動いてくれない。 悪いことは言わんからVSCodeにしとけ
それにTypeScriptはIDEにインストールするもんじゃなく、npmでインストールするただの1ライブラリだ リテラル型からそのリテラルの値を作ることってできないんだっけか。
Record<Foo,boolean>の変数の初期値にReacord<Foo,false>の値が使えたらよかったんだが。 tsはコンパイル後の結果に型情報は含まないというポリシーだけど、
そういう定数を埋め込むことはやろうと思えばできる話だろ。 androidで使えるts用のeditorないかな
トランスパイルとかはメインの環境でやるからコーディングのための入力支援だけでも受けられるようなやつ tslintの"max-classes-per-file"のデフォルト値が1なんだけどこれどういう意味合いがあってこんな制限がかかってるの? Best practice is to keep each file limited to a single responsibility. プロジェクトの規模が大きくなっても1ファイル1classって維持できるものなのか? tsファイルに
string型のnormalize('NFC')を
使おうとしたんだけど、エラーになる。
なんで? プロジェクトが大きくなることとひとつのファイルに書くクラスの数が増えることとが結びつかないんだが バズワードに踊らされてるだけなのか、ツッコミどころてんこ盛りなのは置いておいて・・・
Geekly Media ライター
バスコ
最新の記事がXAMPPで草生えた
10年前からタイムスリップしてきたのか? >>307
>TypeScriptはクラスベースオブジェクト指向です。
完全に合っているが…何が問題なんだ? TypeScriptはクラスベースでJavaScriptはプロトタイプベースって対比しているのは完全におかしい
クラス構文はただの糖衣構文で実態はプロトタイプベースだし、そもそもクラス構文はES2015にあるんだからJavaScriptもクラスベースという話になってしまう Haskellは最終的に再代入しまくりのCに変換される(出来る)けど、Haskellは純粋な関数型言語と言われている
オブジェクト指向言語の様に書けてその通りに動けば、オブジェクト指向言語と言える
TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか? オブジェクト指向的な言語機能に関して言えばTypeScriptはJavaScriptと何ら変わりはないんだから
そのHaskellの例は思いっきり的外れというか牽強付会というか。
>TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか?
プロトタイプが動作しなくなるなら別だが、仕様をまったく変えないという前提なら何も変わらんだろ。
ところで、こんなこと言い張っていた奴なんて見当たらないが、
>TypeScriptはプロトタイプベース
もしかしてクラスベースを否定したらプロトタイプベースを主張していることにされちゃうんだろうか。 TypeScriptはprototypeをいじくるようなコーディングは推奨してないだろ
型システムが破綻する
その時点でプロトタイプとは関係無い単なるオブジェクト指向言語なんだよ
最終的にどう動いてるか何て関係無い
Haskellの様にね いやなんでそんな必死にその糞ガイジ記事を擁護したがるのかわからん
バスコ本人か?
ちゃんと頭のお薬飲めよ 知らなかったが、AssemblyScriptなんてあったのか。
既存のTypeScriptのコードがそのままコンパイルできるわけじゃなくて
文法だけが共通の別言語って感じだが。 ES5以前はともかく、今はPrototypeを意識することは全然ないな
ずっとJavaとかPHPだった人でも違和感なく始められると思う asserts ええな
pipelineオペあくしろよ Google、モバイル開発環境を加速するFlutter 1.9、プログラミング言語Dart 2.5リリース
https://news.mynavi.jp/article/20190912-893296/
Null安全も開発中だそうだし、そうなったら最強かもしれん
TSあやうし! >>323
すでにTSはNull安全なんですがそれは TypeScript 3.7 Iteration Plan
ttps://github.com/microsoft/TypeScript/issues/33352
- Optional Chaining
- Nullish Coalescing
- Assertion Signatures
- Recursive Type References
- ECMAScript Private Fields
- Top-Level await
つよい >>326
Recursive Type References
こんなん出来るのか?
再帰はanyで逃げてたわ。 >>330
いや、必要なのはパッチじゃなくて、明示的なdeprecatedだろ。
MSは全ての官公庁に対して、blinkのブラウザーを強制させるべき。
ゴミ政治家じゃ無理なので、MSがやれ。
黒船代行料として10兆払っても惜しくない。 Object の OR を自動判別ってできないのかな?
下のURLは、TypeScript Playgroundで書いてみたもの
規制で書き込めなかったから、お手数だが concat して開いてほしい
https://
bit.ly
/30Pw8K3 ■ このスレッドは過去ログ倉庫に格納されています