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
기본값: []
이 규칙에서 제외해야 하는 타입 또는 값 지정자.
allow[n]
type: string
특정 선언을 일치시키기 위한 타입 또는 값 지정자
다음 네 가지 유형의 지정자를 지원합니다:
- 문자열 지정자 (사용되지 않음): 이름으로 전역 일치
json
"Promise"- 파일 지정자: 로컬 파일에서 선언된 타입/값과 일치
json
{ "from": "file", "name": "MyType" }
{ "from": "file", "name": ["Type1", "Type2"] }
{ "from": "file", "name": "MyType", "path": "./types.ts" }- Lib 지정자: 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
기본값: true
생성자 매개변수 속성을 검사할지 여부.
ignoreInferredTypes
type: boolean
기본값: false
명시적인 타입 주석이 없는 매개변수를 무시할지 여부.
treatMethodsAsReadonly
type: boolean
기본값: false
가변 메서드를 읽기 전용 멤버처럼 취급할지 여부.
사용 방법
이 규칙을 설정 파일 또는 CLI에서 활성화하려면 다음과 같이 사용할 수 있습니다:
json
{
"rules": {
"typescript/prefer-readonly-parameter-types": "error"
}
}bash
oxlint --type-aware --deny typescript/prefer-readonly-parameter-types