programing

Eslint는 Typescript 앱의 모든 enum이 이미 상위 범위에서 선언되었다고 말합니다.

powerit 2023. 2. 27. 22:14
반응형

Eslint는 Typescript 앱의 모든 enum이 이미 상위 범위에서 선언되었다고 말합니다.

새로운 애플리케이션을 기동할 때, eslint 를 인스톨 해, 다음의 설정으로 설정했습니다만, 각 애플리케이션을 작성할 때마다,enum이미 정의되어 있다고 합니다.말도 안 되는 줄도.다른 변수 유형(const, var, let)에는 이 문제가 없습니다.규칙을 무효로 할 수는 있지만, 실제로 적용되는 상황에 적용했으면 합니다.

    {
  "root": true,
  "parser": "@typescript-eslint/parser",
  "plugins": ["@typescript-eslint"],
  "parserOptions": {
    "project": ["./tsconfig.json"],
    "ecmaFeatures": {
      "ecmaVersion": 6,
      "jsx": true
    }
  },
  "overrides": [],
  "extends": [
    "airbnb-typescript",
    "prettier",
    "prettier/@typescript-eslint",
    "plugin:@typescript-eslint/recommended-requiring-type-checking"
  ],
  "rules": {
    "spaced-comment": 0,
    "import/prefer-default-export": 0,
    "@typescript-eslint/no-use-before-define": 0,
    "@typescript-eslint/restrict-template-expressions": [
      1,
      { "allowBoolean": true }
    ],
    "react/jsx-props-no-spreading": "off",
    "react/state-in-constructor": 0,
    "react/require-default-props": 0,
    "react/destructuring-assignment": [
      1,
      "always",
      {
        "ignoreClassFields": true
      }
    ]
  }
}

여기에 이미지 설명 입력

TSLint-to-ESLint 사용자인 경우 이는 이후 수정된 오류이므로 스크립트를 새로운 버전으로 다시 실행하면 문제가 해결되거나no-shadow및 유효하게 하다@typescript-eslint/no-shadow

규칙을 잘못 사용하고 있는 퍼블릭Configuration을 사용하고 있는 경우는, 반드시 그 설정을 통지해 주세요.이것에 아직 접속하고 있는 유저의 수는 다소 큰폭으로 증가하고 있습니다.


FAQ의 이 섹션@typescript-eslint/no-shadow를 참조하십시오.

사용방법

{
  // note you must disable the base rule as it can report incorrect errors
  "no-shadow": "off",
  "@typescript-eslint/no-shadow": ["error"]
}

typescript-eslint GitHub 문제를 검색하면 동일한 질문을 하는 많은 사람들이 나타납니다.

Tadhg McDonald-Jensen의 대답은 유용하지만, 한 가지 말해야 할 것이 있다.다음 구성 항목을 직접 쓰기.eslintrc에러가 보고됩니다.

{
  // note you must disable the base rule as it can report incorrect errors
  "no-shadow": "off",
  "@typescript-eslint/no-shadow": ["error"]
}

다음으로 No-shadow 규칙의 올바른 예를 제시하겠습니다.

{
  "rules": {
      "no-shadow": "off",
      "@typescript-eslint/no-shadow": ["error"]
  },
}

TypeScript의 다음 코드에서도 같은 문제가 발생했습니다.

export enum MyEnum {
  myValueOne = 'myValue',
  myValueTwo = 'myValueTwo', // <-- got "already declared in the upper scope” error
}

export class myValueTwo {
   constructor(){}
}

아쉽게도 둘 다rules또는overrides문제를 해결하지 못했다

 {
   "rules": {
      "no-shadow": "off",
      "@typescript-eslint/no-shadow": ["error"]
   },
   "overrides": {
      "no-shadow": "off",
      "@typescript-eslint/no-shadow": ["error"]
   },
}

몇 시간 동안 다양한 문제, 질문 및 문서를 확인한 후 다음 웹 사이트의 공식 문서를 발견했습니다.@typescript-eslint/no-shadow여기 링크가 있습니다.

제가 해야 할 일은 이 모든 것을 추가하는 것입니다.ignoreTypeValueShadoweslint 옵션@typescript-eslint/no-shadow.

그림자가 없는 최종 설정은 다음과 같습니다.

{
  "overrides": {
    "no-shadow": "off",
    "@typescript-eslint/no-shadow": ["error", , { "ignoreTypeValueShadow": true }]
  },
}

이 오류는 개체 이름을 사용하여 변수를 선언했을 때 발생합니다.개체 이름의 대문자가 아닌 소문자로 변수 이름을 입력하지 않았습니다.파일 유형:유형 파일

솔루션:수정하려면 변수 이름을 소문자로 입력하십시오.

이 Eslint 오류를 생성하는 코드 예:

이것은 Enum:type-file-model.ts 입니다.

public enum TypeFichier {
XML, PDF, IMAGE, ZIP
}

오브젝트 모델 app-file-model.ts 입니다.

import {TypeFile} from 'app/shared/model/enum/type-file.model';

export interface IAppFile {
  ...
  TypeFile?: TypeFile;
}

export class AppFile implements IAppFile{
  constructor(
    ...
    public TypeFile?: TypeFile
  ) {}
}

기본 "규칙"에 이것을 추가하는 것만으로는 충분하지 않은 것 같아서 재정의에서 다시 추가해야 했습니다.

# eslintrc.js
{
  "rules": { // Did not work here as intended
    "@typescript-eslint/dot-notation": "error",
    "no-shadow": "off",
  },
  "overrides": [
    {
      "files": [
          "*.ts"
      ],
      ...
      "rules": { // Here it worked
          "@typescript-eslint/dot-notation": "error",
          "no-shadow": "off",
      }
  ]
}

다음의 설정을 사용해 에러가 표시되지 않게 할 수 있었습니다.

{
   "rules": {
      "no-shadow": "off",
      "@typescript-eslint/no-shadow": ["off"]
   }
}

두 경우 모두 "off"를 사용합니다. 제가 읽은 모든 예에서 패턴이 반복되는 것을 알 수 있습니다. 첫 번째 예에서는 "off"를 사용하고 두 번째 예에서는 "error"를 사용합니다.이것이 올바른 방법인지 의심스럽지만, 저는 덮어쓰기조차 하지 않고 다른 방법으로 그 오류를 피할 수 없었습니다.

언급URL : https://stackoverflow.com/questions/63961803/eslint-says-all-enums-in-typescript-app-are-already-declared-in-the-upper-scope

반응형