Sug*_*esh 11 typescript react-native
使用Typescript创建了一个react-native入门项目,可以在2周前运行.现在,当我尝试运行项目时,它会在打字稿编译过程中出错.
skipLibraryCheck: true在tsconfig.json中使用可修复错误.但是为什么它会从〜/ .nvm和./node_modules目录中抛出错误?
错误(针对node_modules/.bin/tsc更新):
> node_modules/.bin/tsc
node_modules/@types/react-native/index.d.ts(8742,11): error TS2451: Cannot redeclare block-scoped variable 'console'.
node_modules/@types/react-native/index.d.ts(8750,18): error TS2717: Subsequent property declarations must have the same type. Property 'geolocation' must be of type 'Geolocation', but here has type 'GeolocationStatic'.
node_modules/@types/react-native/index.d.ts(8753,11): error TS2451: Cannot redeclare block-scoped variable 'navigator'.
node_modules/redux-thunk/index.d.ts(4,47): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux-thunk/index.d.ts(8,20): error TS2428: All declarations of 'Dispatch' must have identical type parameters.
node_modules/redux/index.d.ts(115,18): error TS2428: All declarations of 'Dispatch' must have identical type parameters.
node_modules/redux/index.d.ts(161,13): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(283,42): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(283,53): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(302,66): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(302,77): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(303,38): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(384,95): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(389,33): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(391,106): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/redux/index.d.ts(396,34): error TS2314: Generic type 'Dispatch<A, S>' requires 2 type argument(s).
node_modules/typescript/lib/lib.es6.d.ts(21612,13): error TS2451: Cannot redeclare block-scoped variable 'navigator'.
node_modules/typescript/lib/lib.es6.d.ts(21788,13): error TS2451: Cannot redeclare block-scoped variable 'console'.
Run Code Online (Sandbox Code Playgroud)
项目详情:
? react-native info
Environment:
OS: macOS High Sierra 10.13.4
Node: 9.11.1
Yarn: 1.6.0
npm: 6.0.0
Watchman: 4.9.0
Xcode: Xcode 9.2 Build version 9C40b
Android Studio: 2.3 AI-162.3934792
Packages: (wanted => installed)
react: 16.3.1 => 16.3.1
react-native: 0.55.3 => 0.55.3
Run Code Online (Sandbox Code Playgroud)
的package.json
{
"name": "hello-world-rn",
"version": "0.0.1",
"private": true,
"scripts": {
"build": "npm run clean && npm run tsc --",
"clean": "rimraf lib",
"lint": "tslint src/**/*.ts",
"start": "node node_modules/react-native/local-cli/cli.js start"
},
"dependencies": {
"native-base": "2.4.3",
"react-native": "0.55.3",
"react-redux": "5.0.7",
"redux": "4.0.0",
"redux-thunk": "2.2.0"
},
"devDependencies": {
"@types/jest": "22.2.3",
"@types/react": "16.3.13",
"@types/react-native": "0.55.8",
"@types/react-redux": "5.0.19",
"@types/react-test-renderer": "16.0.1",
"babel-core": "6.26.3",
"babel-jest": "22.4.3",
"babel-preset-react-native": "4.0.0",
"concurrently": "3.5.1",
"eslint": "4.19.1",
"jest": "22.4.3",
"react": "16.3.1",
"react-test-renderer": "^16.3.0-alpha.1",
"rimraf": "2.6.2",
"tslint": "5.9.1",
"tslint-config-prettier": "1.12.0",
"tslint-eslint-rules": "5.1.0",
"tslint-react": "3.5.1",
"typescript": "2.8.3"
},
"jest": {
"preset": "react-native",
"testRegex": "lib/.+\\.(test|spec).js$",
"coverageDirectory": "coverage",
"coverageReporters": [
"text-summary",
"html"
]
},
"collectCoverageFrom": [
"lib/**/*.js",
"!lib/**/*.spec.js",
"!lib/**/*.index.js"
]
}
Run Code Online (Sandbox Code Playgroud)
tsconfig.json
{
"compilerOptions": {
"target": "es6",
"module": "commonjs",
"jsx": "react-native",
"sourceMap": true,
"outDir": "./lib",
"strict": true,
"types": ["react", "react-native", "jest"],
"esModuleInterop": true,
"skipLibCheck": false
},
"compileOnSave": false,
"exclude": ["./android/*", "./ios/*", "./lib/*", "./node_modules/*"],
"filesGlob": ["typings/index.d.ts", "src/**/*.ts", "src/**/*.tsx"],
"types": ["react", "react-native", "jest"]
}
Run Code Online (Sandbox Code Playgroud)
我真的不能告诉你时不时发生的事情,打断了打字,我基本上可以给出一些提示...
tsc从终端进行调用时,它将使用打字稿的全局版本,包括其核心类型,这是从那里获取“ .nvm”错误的位置。建议您使用本地版本(node_modules/.bin/tsc)。redux-thunk新的类型是否可以正常使用redux@4.x。可能是错误的根源。我通常只打开“ skibLibCheck”,我们不知道何时在编写库时考虑到旧版本的TS,甚至没有考虑到“ strict”标志。
编辑评论
lib标志禁用TS禁止的类型,这样它们就不会发生冲突。| 归档时间: |
|
| 查看次数: |
3700 次 |
| 最近记录: |