kachick / times_kachick

`#times_kachick channel in chat` as a public repository. Personal Note and TODOs
https://github.com/kachick/times_kachick/issues?q=is%3Aissue+is%3Aclosed
6 stars 0 forks source link

2022-07-07 - TypeScript で副作用が発生しない引数に対してはなるべく Readonly 指定した方が使いやすいかも? #172

Closed kachick closed 2 years ago

kachick commented 2 years ago

https://github.com/DefinitelyTyped/DefinitelyTyped/blob/25dc5becf64ac808ba8a9c56e7d5c6741c3ee410/README.ja.md?plain=1#L278

DefinitelyTyped の README を読んでたら、引数に Array を受け取る時は、副作用無いんだったら ReadonlyArray にしろと合った。 なるほど良さそうと思うし typescript-eslint にも rule がすでに有るっぽいので適用していくのもまぁ出来そう。 https://github.com/typescript-eslint/typescript-eslint/issues/635 https://github.com/typescript-eslint/typescript-eslint/pull/654

でも前 mutable な Array が ReadonlyArray な場所に使えないこと合った気がするんだけどな・・・? という曖昧な記憶があるのでどっかで調べたい

kachick commented 2 years ago

https://github.com/mobu-of-the-world/mobu/pull/503/commits/ab02efb47eb19b283fd6c85dd9d455244e399701

そんな事は無さそうだったので勘違いだったっぽい。多分 普通の array を引数に受け取る様な型付けのところに as const かなんかで作った readonly array を渡せなかったのとかと勘違いしているのでは。 というケースを考えても、やはり副作用無いなら引数に readonly 明記したほうが使いやすそう。

kachick commented 2 years ago

https://github.com/kachick/wait-other-jobs/pull/86/commits/65e61ad012ef84908b676adcf70e8c9860cad2c8

ignoreInferredTypes 指定しないと callback 関数の引数にも強制してくる。これで今渡ってきているパラメータの値を Readonly で wrap する的な事がサクッとできればそれで良いのかもだけど、取り敢えずベタ書きすると Type のずれが発生したりするので嫌だから良い手段見つかるまではこのオプションつけて callback は無視したほうが良さそう