ESLint prefer-readonly-parameter-types の対応
ESLintのエラー対応のメモです。
prefer-readonly-parameter-typesというルールを設定しているとこのようなエラーが出ます。
ESLint: Parameter should be a read only type(@typescript-eslint/prefer-readonly-parameter-types)
読み取り専用の変数(上の場合関数の引数)には readonly
をつけろ、というものです。
プリミティブな型の場合は
const hoge = (fuga:Readonly<string>) => {
}
というように書いてやればOKなのですが、引数に独自のインターフェースを持ったオブジェクトの場合は、
const hoge = (fuga:MyObject) => {
}
オブジェクトのプロパティまで全てread onlyにしてやらないといけないのです。
インターフェースの中に更に別のインターフェースを型にもち、読み取り専用でなかったすると厄介です。
どうしたものかと調べると便利そうなパッケージがありました。
こちらのReadonlyDeepによりオブジェクトの中のプロパティまでreadonlyに変換することが出来ます。
const hoge = (fuga:ReadonlyDeep<MyObject>) = {
}
今回はとりあえずこれで回避。
付け焼き刃な対応なので prefer-readonly-parameter-types
を設定するなら事前に型の設計をちゃんとやらないとダメですね
Author And Source
この問題について(ESLint prefer-readonly-parameter-types の対応), 我々は、より多くの情報をここで見つけました https://qiita.com/verytired/items/c991f8c9e6425fe9d74e著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .