node_modules/@ types/react-dom/....中的错误后续变量声明必须具有相同的类型。变量'a'

node_modules/@ types/react-dom/....中的错误后续变量声明必须具有相同的类型。变量'a'

问题描述:

我已经安装@ types/react-dom以及typescript和@ types/react和@ types/meteor,但是当我尝试从命令行运行typechecker时,出现以下错误node_modules/@ types/react-dom/....中的错误后续变量声明必须具有相同的类型。变量'a'

您可以重现错误,并看到我所有的配置在这里:https://github.com/Falieson/react15-meteor1.5

感谢您的帮助!

$ meteor npm run type:client 

> [email protected] type:client /Users/sjcfmett/Private/ReactMeteorExample 
> tslint -p ./tsconfig.json --type-check './client/**/*.{ts,tsx}' 

Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3422:13: Subsequent variable declarations must have the same type. Variable 'a' must be of type 'DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>', but here has type 'DetailedHTMLProps<AnchorHTMLAttributes<HTMLAnchorElement>, HTMLAnchorElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3423:13: Subsequent variable declarations must have the same type. Variable 'abbr' must be of type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>', but here has type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3424:13: Subsequent variable declarations must have the same type. Variable 'address' must be of type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>', but here has type 'DetailedHTMLProps<HTMLAttributes<HTMLElement>, HTMLElement>'. 
Error at node_modules/@types/react-dom/node_modules/@types/react/index.d.ts:3425:13: Subsequent variable declarations must have the same type. Variable 'area' must be of type 'DetailedHTMLProps<AreaHTMLAttributes<HTMLAreaElement>, HTMLAreaElement>', but here has type 'DetailedHTMLProps<AreaHTMLAttributes<HTMLAreaElement>, HTMLAreaElement>'. 
... (shortened) 

的package.json(供参考)

{ 
    "name": "react-meteor-example", 
    "version": "0.1.0", 
    "private": true, 
    "scripts": { 
    "start": "meteor run", 
    "lint:client": "tslint --fix -c ./tslint.json -p ./tsconfig.json './client/**/*.{ts,tsx}'", 
    "lint:imports": "tslint --fix -c ./tslint.json -p ./tsconfig.json './imports/**/*.{ts,tsx}'", 
    "lint:server": "tslint --fix -c ./tslint.json -p ./tsconfig.json './server/**/*.ts'", 
    "lint": "npm run lint:client && npm run lint:server && npm run lint:imports", 
    "type:imports": "tslint -p ./tsconfig.json --type-check './imports/**/*.{ts,tsx}'", 
    "type:client": "tslint -p ./tsconfig.json --type-check './client/**/*.{ts,tsx}'", 
    "type:server": "tslint -p ./tsconfig.json --type-check './server/**/*.ts'", 
    "type": "npm run type:client && npm run type:server && npm run type:imports", 
    "precommit": "npm run lint && npm run type" 
    }, 
    "dependencies": { 
    "babel-runtime": "^6.20.0", 
    "meteor-node-stubs": "~0.2.4", 
    "react": "^15.6.1", 
    "react-dom": "^15.6.1" 
    }, 
    "devDependencies": { 
    "@types/meteor": "^1.4.2", 
    "@types/react": "^15.6.0", 
    "@types/react-dom": "^15.5.1", 
    "babel-preset-react": "^6.24.1", 
    "babel-preset-stage-1": "^6.24.1", 
    "husky": "^0.14.3", 
    "tslint": "^5.5.0", 
    "tslint-react": "^3.1.0", 
    "typescript": "^2.4.2" 
    } 
} 

的类型阵营16测试已出版为 '最新' 阵营类型。

新版本删除React 16中已删除的部分(如React.DOM)的定义,这是预期的。

不幸的是,这些类型的React 16测试版的发布是在npm而不是@next(就像React那样)中@latest(默认)标记完成的。

我有一个开放的问题(#18708)与DefinitelyTyped这里:https://github.com/DefinitelyTyped/DefinitelyTyped/issues/18708

你可以尝试专门针对特定版本(npm install --save @types/[email protected]),但在@类型的依赖性/反应-DOM为@类型/反应设置到“*”,这似乎导致@ types/react @ latest仍然被下载,导致您在node_modules目录的各个位置有多个版本。

我们不得不做一些手动工作来解决这个问题。希望维护@ types/react的人们很快就会解决这个问题。

我使用的纱线,并通过运行rm -rf node_modules && rm yarn.lock && yarn install

+0

固定这只是让人们都知道 - 如果你是依靠纱作为包管理器,则该命令破坏yarn'的'的全部目的。虽然它肯定解决了这个问题:)另一方面,你可以直接运行'npm install' – Dethariel