1. ホーム
  2. typescript

[解決済み] TypeScriptです。識別子 'IteratorResult' が重複しています。

2022-04-28 22:37:16

質問

を介してコンパイルしようとしています。 tsc --グローバルにインストールしたのですが、エラーになります。

~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6 - error TS2300: Duplicate identifier 'IteratorResult'.

41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
        ~~~~~~~~~~~~~~

  node_modules/@types/node/index.d.ts:170:11
    170 interface IteratorResult<T> { }
                  ~~~~~~~~~~~~~~
    'IteratorResult' was also declared here.

node_modules/@types/node/index.d.ts:170:11 - error TS2300: Duplicate identifier 'IteratorResult'.

170 interface IteratorResult<T> { }
              ~~~~~~~~~~~~~~

~/AppData/Roaming/nvm/v11.15.0/node_modules/typescript/lib/lib.es2015.iterable.d.ts:41:6
    41 type IteratorResult<T, TReturn = any> = IteratorYieldResult<T> | IteratorReturnResult<TReturn>;
            ~~~~~~~~~~~~~~
    'IteratorResult' was also declared here.


Found 2 errors.

私は @types/node バージョン10.1.0がインストールされています。 ( @latest は独自の問題があるのですが...)

tsconfig.json

{
  "compilerOptions": {
    "target": "es2018",
    "moduleResolution": "node",
    "module": "commonjs",
    "jsx": "react",
    "lib": [
      "dom",
      "es2018",
      "dom.iterable",
      "scripthost"
    ],
    "typeRoots": [
      "./node_modules/@types",
      "./types"
    ],
    "types": [],

    "alwaysStrict": true,
    "strictNullChecks": true,
    "noImplicitAny": true,
    "noImplicitReturns": true,
    "noImplicitThis": true,
    "noUnusedLocals": true,

    "experimentalDecorators": true,
    "emitDecoratorMetadata": true,
    "esModuleInterop": true,

    "sourceMap": true,

    "outDir": "dist"
  },
  "files": [
    "app/index.tsx"
  ],
  "include": [
    "app/**/*.ts",
    "app/**/*.tsx",
    "test/**/*.ts",
    "test/**/*.tsx",
    "node_modules/@types/**/*.d.ts",
    "./types/**/*.d.ts"
  ],
  "exclude": [
    "dist"
  ]
}

をアンインストールすると typescript をグローバルに実行し npx tsc をインストールし、実行しても何も問題はないはずです。 typescript グローバルに 結局のところ、それがグローバルに物事をインストールすることの要点なのです。

とりあえず、私はtscのエイリアスを作成することで回避しています(Windowsでgit bashを使っています)。

alias tsc="path/to/project/node_modules/.bin/tsc.cmd"

解決方法は?

GitHubにイシューが見つかりました。 https://github.com/microsoft/TypeScript/issues/32333 というものでした。 rbuckton がアップグレードを提案しました。 @types/node . 私の場合はうまくいきました。