typescript/prefer-readonly-parameter-types Nursery
何ができるか
関数およびメソッドのパラメータが読み取り専用互換の型を使用することを要求する。
なぜ問題なのか
可変なパラメータ型は、誤って変更されやすく、関数の契約を弱める。
読み取り専用のパラメータ型は意図を明確にし、API の安全性を高める。
例
このルールに対して 不正な コードの例:
ts
function update(items: string[]) {
items.push("x");
}
function consume(obj: { value: string }) {
obj.value = obj.value.trim();
}このルールに対して 正しい コードの例:
ts
function update(items: readonly string[]) {
return items.length;
}
function consume(obj: Readonly<{ value: string }>) {
return obj.value;
}設定
このルールは、以下のプロパティを持つ設定オブジェクトを受け入れます。
allow
type: array
default: []
このルールの対象外とするべき型または値の指定子。
allow[n]
type: string
特定の宣言と一致させるための型または値の指定子
次の4種類の指定子をサポートしています:
- 文字列指定子(非推奨):名前による万能一致
json
"Promise"- ファイル指定子:ローカルファイルで宣言された型や値と一致
json
{ "from": "file", "name": "MyType" }
{ "from": "file", "name": ["Type1", "Type2"] }
{ "from": "file", "name": "MyType", "path": "./types.ts" }- ライブラリ指定子:TypeScript 組み込みライブラリの型と一致
json
{ "from": "lib", "name": "Promise" }
{ "from": "lib", "name": ["Promise", "PromiseLike"] }- パッケージ指定子:npm パッケージからの型や値と一致
json
{ "from": "package", "name": "Observable", "package": "rxjs" }
{ "from": "package", "name": ["Observable", "Subject"], "package": "rxjs" }checkParameterProperties
type: boolean
default: true
コンストラクタのパラメータプロパティをチェックするかどうか。
ignoreInferredTypes
type: boolean
default: false
明示的な型注釈のないパラメータを無視するかどうか。
treatMethodsAsReadonly
type: boolean
default: false
可変なメソッドを読み取り専用メンバとして扱うかどうか。
使用方法
このルールを 有効化 するには、設定ファイルまたは CLI で次のように使用できます:
json
{
"rules": {
"typescript/prefer-readonly-parameter-types": "error"
}
}bash
oxlint --type-aware --deny typescript/prefer-readonly-parameter-types