React Native,TypeScript - 无论设置了啥配置,类型“any []”上都不存在属性“包含”,“发现”
Posted
技术标签:
【中文标题】React Native,TypeScript - 无论设置了啥配置,类型“any []”上都不存在属性“包含”,“发现”【英文标题】:React Native, TypeScript - Property 'includes', 'finds' does not exist on type 'any[]' no matter what configuration is setupReact Native,TypeScript - 无论设置了什么配置,类型“any []”上都不存在属性“包含”,“发现” 【发布时间】:2019-06-04 09:41:09 【问题描述】:我发现这个问题在很多很多地方都被问过,但没有一个答案对我有用。我的预感是这与我在 react-native 中工作有关,但我不确定。
如果我的 linter 声称存在错误,我基本上不能使用 find
或 includes
等 es7 数组属性。没有(react-native javascript 环境包含此属性)但无论我做什么我都无法消除错误。
对此问题的大部分回复都围绕着更改tsconfig.json
,特别是lib
或target
属性。
我现在的tsconfig.json
是:
"compilerOptions":
"allowJs": true,
"target": "esnext",
"outDir": "dist",
"module": "commonjs",
"sourceMap": true,
"lib": ["es2016.array.include"],
"jsx": "react-native",
"strict": true,
"allowSyntheticDefaultImports": true,
"esModuleInterop": true,
"experimentalDecorators": true,
"emitDecoratorMetadata": true
根据文档,es2016.array.include
是 lib 属性的有效值,但我仍然看到错误 Property includes does not exist on type any[]
。
我尝试将目标设置为 es2015、es2016、es2017、es2018、es5、es6 和 esnext。我尝试向我的 lib 参数添加各种东西,包括 es6、es6、es7、dom、es2016、es2017、es2018、esnext 以及 es2106.array.includes 等特定属性,但这些值或任何组合都不能从我的短绒。
【问题讨论】:
所以代码执行但 linter 抱怨?哪个版本的tsc
?
您在哪里看到错误,在编译期间还是在执行期间? tsconfig.json
更改仅应在转译期间起作用。它不会为函数添加 polyfill,这将 不 存在于 React Native 可执行文件中(因为它们倾向于在 android 上使用旧版本的 JavaScriptCore)。在这种情况下,您需要通过 core-js 或其他 polyfill 添加它们。 React Native 应该是通过 babel 自带的,但我想知道它有多完整。
好吧,我是打字稿的新手,所以我没有意识到这一点。此错误仅通过 VSCode 中的 tslint 显示。当我编译时它不存在,所以我想我是在吠叫错误的树?
也 fwiw Array.includes
和 Array.find
在所有 react-native javascript 运行时中填充:facebook.github.io/react-native/docs/javascript-environment
【参考方案1】:
对我有帮助
在 tsconfig.json "lib": ["es6", "ES2016.Array.Include"],
【讨论】:
以上是关于React Native,TypeScript - 无论设置了啥配置,类型“any []”上都不存在属性“包含”,“发现”的主要内容,如果未能解决你的问题,请参考以下文章
React-native:从 javascript 迁移到 typescript
已有的react-native 项目配置TypeScript
在后端、react 和 react-native 客户端之间共享 typescript 代码