programing

Tslint - 유형이 사소한 추론 - 유형을 여기에 포함하는 것이 나쁜 관행인 이유는 무엇입니까?

starjava 2023. 5. 27. 09:17
반응형

Tslint - 유형이 사소한 추론 - 유형을 여기에 포함하는 것이 나쁜 관행인 이유는 무엇입니까?

VSCode에서 다음 코드를 추가하면 linter인 tslint가 다음과 같이 불평합니다.

serverId: number = 10;

그리고 다음과 같은 메시지를 제공합니다.

[tslint] 숫자 리터럴에서 경미하게 추론된 형식 번호, 형식 주석 제거(이해할 수 없는 형식)

'번호' 유형을 제거하면 메시지가 사라집니다.

유형 정보를 여기에 포함하는 것이 좋지 않은 이유는 무엇입니까?

나쁜 습관은 아니지만,serverId: number = 10중복됩니다, 왜냐하면number속성이 할당될 때 유형이 유추됩니다.이것이 TSLint의 내용입니다.no-inferrable-types경고:

컴파일러가 쉽게 유추할 수 있는 명시적 유형은 코드를 더 장황하게 만듭니다.

가능성이 없는 한serverId속성은 처음에는 정의되지 않았지만 나중에 정의될 수 있습니다(예:constructor함수),number안전하게 생략할 수 있습니다.

이 방법은 유형이 추론되지 않았기 때문에 실수로 누락될 가능성이 없기 때문에 옵션에서 가장 잘 작동합니다.

위에서 언급한 바와 같이, 기술적으로 중복되고 복잡하다고 간주될 수 있습니다.개인적으로 저는 이 의견에 관심이 없으며 다양한 사소한 워크플로우 이유로 유형과 값을 모두 갖는 것을 선호하며 규칙을 보장하는 수준의 혼란스러운 수준이라고 생각하지 않습니다.사용하지 않으려면 다음과 같이 하십시오.

  • open tslint.json
  • "해석 불가능한 유형" 특성 찾기
  • 더하다ignore-properties그것의 배열에.

관련 tslint 문서 https://palantir.github.io/tslint/rules/no-inferrable-types/

tslint가 이상 사용되지 않기 때문에 ESLint 솔루션을 찾고 있는 경우 다음 규칙을 ESLint 구성에 추가합니다.

module.exports = {
  // ...
  rules: {
    // ...,
    "@typescript-eslint/no-inferrable-types": "off",
    ...
  },
};

이 오류는 의 구성으로 인해 발생합니다.tslint.json파일.

변수를 다음과 같이 초기화합니다.

serverId = 10;

또는

serverId: number;

또는 에 대한 구성을 설정합니다.no-inferrable-typestslint.json 파일에 다음과 같이 표시됩니다.

no-inferrable-types: false

불필요하며 새로운 정보를 제공하지 않습니다.기본적으로 "10은 숫자"라는 댓글입니다.

지금 와서 이상할 수도 있지만, 비슷한 오류가 발생하여 각진 앱의 tslint.json 파일에서 "no-inferrable-types" 특성을 찾을 수 없었습니다.애초에 왜 그것이 생성되지 않았는지 모르겠지만, 나는 그것을 여기에 삽입해야 했습니다.

"rules": {
    **"no-inferrable-types": false,**
    "directive-selector": [
      true,
      "attribute",
      "app",
      "camelCase"
    ],

그리고 나서 그것은 매력적으로 작동했습니다!

추신. 이것은 저와 같은 문제로 고민하고 있는 사람을 위한 것입니다. 아니면 제가 틀렸을 수도 있습니다. 왜냐하면 솔루션 중 아무도 json 파일에서 이 문제를 우리 쪽에서 추가해야 한다고 언급하지 않았기 때문입니다.

소음으로 보일 수도 있습니다.사소한 부분이 아닌 부분을 입력하는 것이 더 중요합니다.

intslint.json 파일에서 이 규칙을 추가하거나 완료합니다.

"no-inferrable-types": [
  true,
  "ignore-params",
  "ignore-properties"
]

파일에서 Tslint.json 파일을 합니다.no-inferrable-typesfalse:

"rules": {
    ...
    "no-inferrable-types": false,
    ...
    ]

언급URL : https://stackoverflow.com/questions/46799828/tslint-type-trivially-inferred-why-is-it-bad-practice-to-include-the-type-he

반응형