[typescript] “중복 식별자”를 혼동하는 Typescript 오류 메시지

왜 이런 종류의 오류가 더 많이 발생합니까? 아래의 키 코드 스 니펫뿐만 아니라 리포지토리에 대한 링크를 추가하고 있습니다. 종속성과 “포함”체인 작동 방식에 대한 기본적인 오해가 있다고 생각합니다.

csvproc(master)> tsc
node_modules/typescript/bin/lib.core.d.ts(83,5): error TS2300: Duplicate identifier 'configurable'.
node_modules/typescript/bin/lib.core.d.ts(84,5): error TS2300: Duplicate identifier 'enumerable'.
node_modules/typescript/bin/lib.core.d.ts(85,5): error TS2300: Duplicate identifier 'value'.
node_modules/typescript/bin/lib.core.d.ts(86,5): error TS2300: Duplicate identifier 'writable'.

모든 코드는 여기에서 찾을 수 있습니다 .

내 tsconfig.json :

{
    "compilerOptions": {
        "module": "commonjs",
        "noImplicitAny": false,
        "outDir": "built/",
        "sourceMap": true,
        "target": "es5"
    }
}

내 tsd.json :

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "node/node-0.10.d.ts": {
      "commit": "6387999eb899d0ba02d37dd8697647718caca230"
    },
    "should/should.d.ts": {
      "commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
    }
  }
}

내 tsd.d.ts :

{
  "version": "v4",
  "repo": "borisyankov/DefinitelyTyped",
  "ref": "master",
  "path": "typings",
  "bundle": "typings/tsd.d.ts",
  "installed": {
    "node/node-0.10.d.ts": {
      "commit": "6387999eb899d0ba02d37dd8697647718caca230"
    },
    "should/should.d.ts": {
      "commit": "e1182d56ccb192379eade6055d9ba3fb6a0bacc4"
    }
  }
}



답변

이것은 두 가지의 조합 때문입니다.

  • tsconfigfiles섹션이 없습니다 . 에서 http://www.typescriptlang.org/docs/handbook/tsconfig-json.html

    tsconfig.json에 “files”특성이 없으면 컴파일러는 기본적으로 포함 디렉토리 및 서브 디렉토리에 모든 파일을 포함하도록 설정합니다. “files”속성이 지정되면 해당 파일 만 포함됩니다.

  • typescriptnpm 의존성 포함 : node_modules/typescript/이것은 모든 typescript도착이 포함 된다는 것을 의미합니다 …. lib.d.ts어쨌든 프로젝트에 암시 적으로 포함 되어 있습니다 ( http://basarat.gitbook.io/typescript/content/docs/types/lib.d.ts .html ) 및 NPM 버전의 typescript와 함께 제공되는 것과 충돌합니다.

고치다

목록 중 하나 files또는 include명시 적으로 https://basarat.gitbook.io/typescript/docs/project/files.html 🌹


답변

업데이트 : Typings 버전 1.0은 출력 구조를 변경했으며 아래 답변은 1.0 이전 버전과 관련이 있습니다.

타이핑을 사용하고 tsconfig.json에서 제외하는 경우 중복 유형 문제가 발생할 수 있으며 다음과 같은 것이 필요할 수 있습니다.

{
  "exclude": [
    "typings/browser.d.ts",
    "typings/browser",
    "node_modules"
  ]
}

TypeScript와의 통합을 단순화하기 위해 프로젝트에 설치된 모든 입력을 참조하는 두 개의 파일 (types / main.d.ts 및 typings / browser.d.ts)이 생성됩니다 (한 번에 하나만 사용할 수 있음).

따라서 필요한 버전에 따라 “브라우저”또는 “메인”유형 파일을 제외 (또는 포함)해야하지만 둘다는 아닙니다.

이 타이핑 문제 는 더 자세히 설명합니다.


답변

타이핑 폴더 아래에 타이핑을 별도로 설치 한 경우

{
  "exclude": [
    "node_modules",
    "typings"
  ]
}


답변

문제는 간단하게 해결되었습니다.

  1. node_modules폴더 삭제
  2. npm install올바른 버전의 모든 패키지를 가져 오기 위해 실행

필자의 경우 새 분기가 다른 노드 모듈 세트를 사용하는 Git 분기를 변경 한 후 문제가 발생했습니다. 이전 지점은 TypeScript v1.8, 새로운 v2.0을 사용하고있었습니다.


답변

나는이 문제에 부딪쳤다. 을 실행했을 때 npm start중복 식별자 오류가 발생했습니다.

해결책:

프로젝트 루트 폴더에서 다음을 실행하십시오.

rm -r typings
typings install
npm start

모든 것이 잘 작동합니다.


답변

tsconfig.json 파일에서 exclude 옵션을 다음과 같이 사용할 수도 있습니다.

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "declaration": false,
    "noImplicitAny": false,
    "removeComments": true,
    "noLib": false,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true
  },
  "exclude": [
    "node_modules"
  ]
}


답변

내 경우에는 오류가 발생했습니다.

node_modules/@types/es6-promise/index.d.ts (11,15) : 오류 TS2300 : 중복 된 식별자 ‘Promise’.

그리고 나는 @types/es6-promisepackage.json에 있었지만 tsconfig이미와 함께했습니다 target: "es6". 그래서 Promise컴파일 할 때 충돌이 있다고 생각 합니다.

@types/es6-promisepackage.json파일 에서 제거 하면 문제가 해결되었습니다.