如果我在我的项目中添加@types/styled组件,我将在构建输出中出现一系列错误:
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中的错误(36,15):
TS2300:重复标识符“FormData”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(81,5):
TS2717:后续属性声明必须具有相同的类型。属性“body”的类型必须为“BodyInit”,但此处的类型为“string | ArrayBuffer | DataView | Int8Array | Uint8Array | uint8clampedaray | Int16Array | Int32Array | Uint32Array | Float32Array | Float64Array | Blob | FormData”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(107,14):
TS2300:重复的标识符“RequestInfo”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(126,13):
TS2403:后续变量声明必须具有相同的类型。变量“Response”的类型必须为“{new(body?:BodyInit,init?:ResponseInit):Response;prototype:Response;error():Response;redirect(url:string,status?:number):Response;}”,但此处的类型为“{new”(body?:string | ArrayBuffer | DataView | Int8Array | Uint8Array | uint8clampedaray | Int16Array | Uint16Array | uint32 array | Float32Array | Float64Array | Blob | FormData,init?:ResponseInit):响应;原型:响应;错误:()=>;响应;重定向:(url:string,status?:number)=>。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(196,5):
TS2717:后续属性声明必须具有相同的类型。属性“abort”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(197,5):
TS2717:后续属性声明必须具有相同的类型。属性“error”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(198,5):
TS2717:后续属性声明必须具有相同的类型。属性“load”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(199,5):
TS2717:后续属性声明的类型必须相同。属性“loadend”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(200,5):
TS2717:后续属性声明的类型必须相同。属性“loadstart”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(201,5):
TS2717:后续属性声明必须具有相同的类型。属性“progress”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(202,5):
TS2717:后续属性声明必须具有相同的类型。属性“timeout”的类型必须为“ProgressEvent”,但此处的类型为“Event”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(206,5):
TS2717:后续属性声明必须具有相同的类型。属性“onabort”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(207,5):
TS2717:后续属性声明必须具有相同的类型。属性“onerror”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(208,5):
TS2717:后续属性声明必须具有相同的类型。属性“onload”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(209,5):
TS2717:后续属性声明必须具有相同的类型。属性“onloadend”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(210,5):
TS2717:后续属性声明必须具有相同的类型。属性“onloadstart”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(211,5):
TS2717:后续属性声明必须具有相同的类型。属性“onprogress”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(212,5):
TS2717:后续属性声明必须具有相同的类型。属性“ontimeout”的类型必须为“(this:XMLHttpRequest,ev:ProgressEvent)=>;any”,但此处的类型为“(this:XMLHttpRequest,ev:Event)=>;any”。
/Users/me/projects/react/node_modules/@types/react native/globals.d.ts中出现错误(243,6):
TS2300:重复标识符“XMLHttpRequestResponseType”。
/Users/me/projects/react/node_modules/@types/react native/index.d.ts中出现错误(9297,14):
TS2300:重复标识符“require”。
/Users/me/projects/react/node_modules/@types/react native/index.d.ts中出现错误(9315,11):
TS2451:无法重新声明块作用域变量“console”。
/Users/me/projects/react/node_modules/@types/react native/index.d.ts中出现错误(9323,18):
TS2717:后续属性声明必须具有相同的类型。属性“geolocation”的类型必须为“geolocation”,但此处的类型为“GeolocationStatic”。
/Users/me/projects/react/node_modules/@types/react native/index.d.ts中出现错误(9326,11):
TS2451:无法重新声明块作用域变量“navigator”。
/Users/me/projects/react/node_modules/@types/webpack env/index.d.ts中出现错误(203,13):
TS2300:重复标识符“require”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(5196,11):
TS2300:重复标识符“FormData”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(5206,13):
TS2300:重复标识符“FormData”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(16513,11):
TS2320:接口“Window”无法同时扩展类型“GlobalFetch”和“WindowOrWorkerGlobalScope”。
“GlobalFetch”和“WindowOrWorkerGlobalScope”类型的命名属性“fetch”不相同。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(17406,13):
TS2451:无法重新声明块作用域变量“navigator”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(17510,13):
TS2451:无法重新声明块作用域变量“console”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts(17819,6)中出错:
TS2300:重复的标识符“RequestInfo”。
/Users/me/projects/react/node_modules/typescript/lib/lib.dom.d.ts中出现错误(17992,6):
TS2300:重复标识符“XMLHttpRequestResponseType”。
出于某种原因,它添加了@types/react native,这与我的react应用程序有一些冲突
我有下一个tsconfig.json:
{
“编译器选项”:{
“目标”:“es5”,
“模块”:“commonjs”,
“jsx”:“反应”,
“outDir”:“/production/”,
“源地图”:正确,
“noImplicitAny”:没错,
“lib”:[“esnext”,“dom”],
“resolveJsonModule”:true
},
“包括”:[
“/src/***”
]
}
通过将type属性中的确切类型添加到tsconfig.json中,可以解决此问题:
{
“编译器选项”:{
...
“类型”:[
“开玩笑”,
“不同的笑话”,
“反应”,
“反应dom”,
“国际反应”,
“反应重复”,
“反应路由器dom”,
“网页包环境”,
“样式化组件”
]
},
...
}
但是这个解决方案在我看来不太好。还有其他的解决方案吗
2020年12月21日更新
将样式化组件/本机类型移出@types/styled components并放入其自己的包(@types/styled components react native)。如果有人想使用样式化组件/本机,他们只需安装@types/styled components react native,它将自动增加样式化组件类型(因为TypeScript自动包含所有已安装的@types包)
这使得主导出(即从“styled components”导入样式)可以开箱即用(这是最常见的用法)。为了获得样式化组件/本机,您只需安装其他@types包,这比在tsconfig.json中设置类型:[]更容易
(从拉取请求复制的解决方案)
https://github.com/DefinitelyTyped/DefinitelyTyped/pull/49914
旧的
我也有同样的问题,我解决了将@types/样式化组件降级到4.1.8的问题
您可以通过:[email protected]/styled来实现这一点[email protected]保存开发--准确保存
这个问题仍然开放了一年多,你会发现所有的一些解决办法
关于这个问题,@types/styled组件似乎需要@types/react native,这会导致DOM lib出现问题。这意味着,如果您在web上使用react,则会因为react native键入与DOM lib发生冲突。如果您使用react native,则不需要降级。如果需要,请尝试下面的方法不想降级:
对于NPM用户,Github中提到的一个可能的解决方法是添加:
“postinstall”:“rm-rf节点”模块/@types/react native”;
在您的包.json中,在安装类型后删除它们
对于纱线<