X



TypeScript part3

■ このスレッドは過去ログ倉庫に格納されています
0233デフォルトの名無しさん
垢版 |
2019/06/10(月) 07:11:15.54ID:s0ANUlh8
>>232
デフォと言いたいが

arrowParens: "always",
semi: false,
trailingComma: "es5",

のみ付けるのが多い(気がする)
0234デフォルトの名無しさん
垢版 |
2019/06/10(月) 07:12:37.13ID:s0ANUlh8
semi: false,
だけは本当に極稀に問題になるから、設定しなくてもいい
目障りだから俺は設定するけどね
0235デフォルトの名無しさん
垢版 |
2019/06/13(木) 17:34:43.34ID:3ecrlnnk
>>233, 234
ありがとう!試してみる!
0236デフォルトの名無しさん
垢版 |
2019/06/15(土) 19:57:13.61ID:60xjKXFz
const x = { a: 'b' };

この x の型は { a: string } になってしまうみたいだけど、 { a: 'b' } 型にする方法ってないんでしたっけ?
TypeScript 3.5です。
0243デフォルトの名無しさん
垢版 |
2019/06/21(金) 19:42:13.96ID:NhtzQec8
anyを許すルールにするっつったら
「でもapiからくる値なら全て型定義できますよね?」
って言われたことにものすごい疲れた
完璧なappなんかねーんだよ!!!ってキレそうだったわ
0248デフォルトの名無しさん
垢版 |
2019/06/22(土) 18:02:27.27ID:WCwRyrQC
>>247
許容派です。
再帰処理とかをまともに型付してたら、辛すぎる。。

ちなみに
const arr = []
で、never[]型になるのがしんどい。

設定でany[]型にならないでしょうか・・?
0251デフォルトの名無しさん
垢版 |
2019/06/23(日) 13:58:34.11ID:iaXcaTkq
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")

でやり過ごしてる
0252デフォルトの名無しさん
垢版 |
2019/06/24(月) 11:41:32.01ID:218UFAwP
この研究によると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)∗∗∗
0253デフォルトの名無しさん
垢版 |
2019/06/24(月) 11:46:37.72ID:eHWTfFeZ
コンパイラにバグが無い
コンパイル中にコードのバグは発見出来る
アルゴリズムのバグは知らんがな
0254デフォルトの名無しさん
垢版 |
2019/06/24(月) 21:38:49.72ID:RR0ut14u
TypeScriptで書いたプロダクトにバグが少ないのか、TypeScriptコンパイラにバグが少ないのか、どっちよ?
0257デフォルトの名無しさん
垢版 |
2019/06/25(火) 18:21:53.19ID:Cc6pu6kp
>>254
TSで書かれたソフトウェアにバグが少ない
そのPDFによれば調査対象のメジャーな10種くらいの言語の中で最も少ない
0258デフォルトの名無しさん
垢版 |
2019/06/25(火) 20:19:43.86ID:VFPzRDke
C#と大して変わらんのにバグが少なくなるって根拠がよく分からん
JavaScript上がりのプログラマが使うことが多いから良く訓練されているってのが考えられる根拠だなw
0259デフォルトの名無しさん
垢版 |
2019/06/25(火) 23:32:40.42ID:AQeJL9YJ
ユーザのリテラシが高いが後押ししてるのはありえそうだな

phpあたりは言語もユーザもガイジだからかわいそう
0260デフォルトの名無しさん
垢版 |
2019/06/26(水) 00:17:43.45ID:+9DnWsFD
JavaScriptは初心者が触るには最悪の言語と言っても過言ではないないから、ありとあらゆるバグを出して大変な目に遭ったプログラマがTypeScriptを使うことになると、バグも少なくなるだろうなという意味だよ
0263デフォルトの名無しさん
垢版 |
2019/06/26(水) 00:45:17.97ID:f1MF/JvG
スレッドがないとかポインタがないとかでできないことがある分バグも減るでしょ
0266デフォルトの名無しさん
垢版 |
2019/06/26(水) 12:25:57.23ID:7Ob4FOl6
>>264
Web画面なんて壊れてても気にしないからコミット取り消さないし
そもそも画面実装とかサーバに比べて問題の範囲が限定的でたいして難しくないだろ
最初から扱ってる問題が言語ごとにちがうんだ
この表ってか論文で一緒にしてるのおかしい

あ、型なし言語はあかんと思います
0267デフォルトの名無しさん
垢版 |
2019/06/26(水) 16:21:39.07ID:b+WM9Si2
確かにCとかC++は基礎的なソフトに使われるから
僅かなバグも絶対に許されないとこありそう
それ以外にポインタ使ってるからってのもあるだろうけど
0268デフォルトの名無しさん
垢版 |
2019/06/29(土) 10:08:56.36ID:/kbU3u2K
>>266
動画の新しいエンコーダ作るとか、プログラムじゃなくて数学のレベルを求められる仕事は置いといて、

webならフロントの方がよっぽど複雑じゃない?
バックなんて同期処理でお決まりのレールに乗ってダラダラ書いてくだけだし。

複雑でパフォーマンスが要求されるpwaとか、typescript無かったら絶対に完成する気しないわ。
カオス過ぎる
0269デフォルトの名無しさん
垢版 |
2019/06/29(土) 10:25:06.32ID:Kp+ip4R/
js/tsだけどダイアログとか出すときに
モードレスにした方がユーザーには使い易いのに
バグが増えそうだからモードレス禁止ってことで
全部モーダルで造らされたことがある
0270デフォルトの名無しさん
垢版 |
2019/06/29(土) 19:29:55.34ID:pedxXkW2
型の判定の正しい手順ってどうだっけ?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;
}
0272デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:10:38.25ID:7Llu84Qc
そりゃTypeScriptだって魔法じゃないんだから。
すごいのは外部から渡された得体の知れない値をこうやって動的に型判定して
それを静的な型の世界に持ち込めるところ。
0273デフォルトの名無しさん
垢版 |
2019/06/30(日) 01:36:24.68ID:y+UHg1Q8
ts知らないけど処理系がロード済みの型一覧を取得できないの
0275デフォルトの名無しさん
垢版 |
2019/07/01(月) 22:30:11.88ID:VQESBdFl
>>270
この返り値、なんていう記法?
というか、なぜこんな書き方が必要なの?
0279デフォルトの名無しさん
垢版 |
2019/07/07(日) 08:52:11.33ID:eO4QC7Eh
/* 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>
0280デフォルトの名無しさん
垢版 |
2019/07/07(日) 09:34:19.15ID:z09Q0v8J
その暗黙の推論を禁止するルールなんだから普通に考えたら無いよね。
型付けが難しい場合があるのはわかるけど、eslint-disableじゃだめな理由は?
全体として入れているチェックの例外を設けるなら後からその箇所がわかるように
しておかなきゃ困ると思うが。
0282デフォルトの名無しさん
垢版 |
2019/07/07(日) 10:24:01.49ID:eO4QC7Eh
>>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 にしたくない
というお気持ち

やっぱ無理ッスかね
0285デフォルトの名無しさん
垢版 |
2019/07/07(日) 13:32:44.90ID:eO4QC7Eh
>>284
既にこれで設定してます

---
"@typescript-eslint/explicit-function-return-type": [
"error",
{
allowExpressions: true,
allowTypedFunctionExpressions: true,
},
],
---
0290デフォルトの名無しさん
垢版 |
2019/07/23(火) 23:09:48.66ID:vuRfx8Ta
tslintが年内収束ってことなんでeslint移行を試しているが、まだ微妙に使いづらいな。
0291デフォルトの名無しさん
垢版 |
2019/07/24(水) 12:05:38.50ID:CC3juVRq
Svelte 試してるんだが TS にできない……
eslint-config-prettierがほぼ使用不可になるのもしんどい
0292デフォルトの名無しさん
垢版 |
2019/07/28(日) 15:31:08.83ID:o4KFBn8V
vs2019に入れるときはどうしたらいいですか?

色々やってて、2017には入ったけど、HelloWorldが正しく動いてくれない。
0293デフォルトの名無しさん
垢版 |
2019/07/28(日) 16:16:00.92ID:9XfU9Gs7
悪いことは言わんからVSCodeにしとけ
それにTypeScriptはIDEにインストールするもんじゃなく、npmでインストールするただの1ライブラリだ
0295デフォルトの名無しさん
垢版 |
2019/07/30(火) 20:33:12.19ID:+pfbQhET
リテラル型からそのリテラルの値を作ることってできないんだっけか。
Record<Foo,boolean>の変数の初期値にReacord<Foo,false>の値が使えたらよかったんだが。
0296デフォルトの名無しさん
垢版 |
2019/07/31(水) 01:05:45.62ID:LQAad41F
型情報から実行時インスタンスの値を変更は不可能
0298デフォルトの名無しさん
垢版 |
2019/07/31(水) 22:36:31.70ID:79+NgejT
tsはコンパイル後の結果に型情報は含まないというポリシーだけど、
そういう定数を埋め込むことはやろうと思えばできる話だろ。
0299デフォルトの名無しさん
垢版 |
2019/08/27(火) 08:04:24.39ID:qSEEAuKd
androidで使えるts用のeditorないかな
トランスパイルとかはメインの環境でやるからコーディングのための入力支援だけでも受けられるようなやつ
0302デフォルトの名無しさん
垢版 |
2019/09/05(木) 23:20:27.31ID:VPhKtGaJ
tslintの"max-classes-per-file"のデフォルト値が1なんだけどこれどういう意味合いがあってこんな制限がかかってるの?
0304デフォルトの名無しさん
垢版 |
2019/09/06(金) 08:25:08.20ID:yVtePnMR
プロジェクトの規模が大きくなっても1ファイル1classって維持できるものなのか?
0305デフォルトの名無しさん
垢版 |
2019/09/06(金) 14:16:54.22ID:2oSh/AAo
tsファイルに
string型のnormalize('NFC')を
使おうとしたんだけど、エラーになる。

なんで?
0306デフォルトの名無しさん
垢版 |
2019/09/06(金) 19:54:40.86ID:XEN3PN1i
プロジェクトが大きくなることとひとつのファイルに書くクラスの数が増えることとが結びつかないんだが
0309デフォルトの名無しさん
垢版 |
2019/09/10(火) 23:33:47.24ID:A1/RuLsT
バズワードに踊らされてるだけなのか、ツッコミどころてんこ盛りなのは置いておいて・・・

Geekly Media ライター
バスコ

最新の記事がXAMPPで草生えた
10年前からタイムスリップしてきたのか?
0311デフォルトの名無しさん
垢版 |
2019/09/11(水) 20:26:00.45ID:P5SVRA88
TypeScriptはクラスベースでJavaScriptはプロトタイプベースって対比しているのは完全におかしい
クラス構文はただの糖衣構文で実態はプロトタイプベースだし、そもそもクラス構文はES2015にあるんだからJavaScriptもクラスベースという話になってしまう
0313デフォルトの名無しさん
垢版 |
2019/09/12(木) 02:40:31.86ID:hFthHt+S
Haskellは最終的に再代入しまくりのCに変換される(出来る)けど、Haskellは純粋な関数型言語と言われている
オブジェクト指向言語の様に書けてその通りに動けば、オブジェクト指向言語と言える
TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか?
0314デフォルトの名無しさん
垢版 |
2019/09/12(木) 08:27:51.94ID:ome0ZpEu
オブジェクト指向的な言語機能に関して言えばTypeScriptはJavaScriptと何ら変わりはないんだから
そのHaskellの例は思いっきり的外れというか牽強付会というか。

>TypeScriptが言語仕様を全く変えずにWebAssemblyにコンパイルされるようになっても、TypeScriptはプロトタイプベースと言い張るのか?

プロトタイプが動作しなくなるなら別だが、仕様をまったく変えないという前提なら何も変わらんだろ。
ところで、こんなこと言い張っていた奴なんて見当たらないが、

>TypeScriptはプロトタイプベース

もしかしてクラスベースを否定したらプロトタイプベースを主張していることにされちゃうんだろうか。
0315デフォルトの名無しさん
垢版 |
2019/09/12(木) 16:14:58.14ID:y6P0yrLb
TypeScriptはprototypeをいじくるようなコーディングは推奨してないだろ
型システムが破綻する
その時点でプロトタイプとは関係無い単なるオブジェクト指向言語なんだよ
最終的にどう動いてるか何て関係無い
Haskellの様にね
0316デフォルトの名無しさん
垢版 |
2019/09/14(土) 21:17:37.20ID:1MUQqrBS
いやなんでそんな必死にその糞ガイジ記事を擁護したがるのかわからん
バスコ本人か?
ちゃんと頭のお薬飲めよ
0317デフォルトの名無しさん
垢版 |
2019/09/18(水) 08:52:01.19ID:F+0EZiKQ
知らなかったが、AssemblyScriptなんてあったのか。
既存のTypeScriptのコードがそのままコンパイルできるわけじゃなくて
文法だけが共通の別言語って感じだが。
0319デフォルトの名無しさん
垢版 |
2019/09/18(水) 17:14:10.63ID:reuwXmQ7
ES5以前はともかく、今はPrototypeを意識することは全然ないな
ずっとJavaとかPHPだった人でも違和感なく始められると思う
0326デフォルトの名無しさん
垢版 |
2019/09/19(木) 22:33:00.75ID:Q6kUj/r3
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

つよい
0329デフォルトの名無しさん
垢版 |
2019/09/29(日) 01:47:49.36ID:DcYKtIGC
>>326
Recursive Type References
こんなん出来るのか?

再帰はanyで逃げてたわ。
0331デフォルトの名無しさん
垢版 |
2019/10/04(金) 21:06:33.10ID:btlbHhjd
>>330
いや、必要なのはパッチじゃなくて、明示的なdeprecatedだろ。

MSは全ての官公庁に対して、blinkのブラウザーを強制させるべき。

ゴミ政治家じゃ無理なので、MSがやれ。

黒船代行料として10兆払っても惜しくない。
0332デフォルトの名無しさん
垢版 |
2019/10/06(日) 16:12:20.74ID:GCn9yAhL
Object の OR を自動判別ってできないのかな?
下のURLは、TypeScript Playgroundで書いてみたもの
規制で書き込めなかったから、お手数だが concat して開いてほしい

https://
bit.ly
/30Pw8K3
■ このスレッドは過去ログ倉庫に格納されています

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