无法使用带有TypeScript的React Native找到变量Symbol

时间:2018-02-22 15:59:56

标签: javascript android reactjs typescript react-native

我在我的React Native项目中使用ES6 Symbol。这适用于iOS,但在Android上我得到Can't find variable: Symbol

我正在使用TypeScript,并且我尝试了各种tsconfig.json

{
  "compilerOptions": {
    "target": "es2015",
    "jsx": "react",
    "lib": ["dom", "es7"],
    "moduleResolution": "node"
  },
}

我还尝试了lib: ["dom", "es6"]["dom", "es6", "es7"]以及target: "es5"

如何让Android上的React Native为TypeScript正确处理Symbol

3 个答案:

答案 0 :(得分:3)

您可以使用import 'core-js/es6/symbol'而无需添加npm依赖项或复制粘贴polyfill

编辑:我怀疑这是一个TS问题。 Android JS运行时没有Symbol支持。我在普通JSX中也遇到了这个问题,并使用上面粘贴的片段修复了它。

答案 1 :(得分:0)

这完全是一个TypeScript问题。

您缺少填充物。

作为一个转换器,TypeScript转换语法结构以表示它们的行为,但它不提供运行时库。

使用您选择的软件包管理器安装an es6-symbol polyfill like this one,一切都会顺利。

符号是一个库,一般来说不在编译范围之内,至少从TypeScript团队的角度来看。

这样做的部分动机是您可以选择自己的polyfill实现,为您提供灵活性。我想到的另一个问题是,在有足够的信息知道是否可以排除填充物之前,经常会调用转换器。

注意:您的--target设置为es2015,但由于es2015中指定的库未由--target es5提供,您在某些平台上遇到了问题运行时。我强烈建议您暂时降低使用率"target": "es2015", "lib": ["dom", "es7"],

我建议的另一件事是在配置术语中保持一致。

"target": "es2015",
"lib": ["dom", "es2016"],

令人困惑,应该改为

{{1}}

为了读者而

答案 2 :(得分:0)

您可以将它们导入您的根rather than a numeric value, but I always get the文件中,而无需安装任何依赖项:

index.js