Babel.js Typescript装饰器在React Native中无法正常工作

tcomlyy6  于 2023-09-28  发布在  Babel
关注(0)|答案(1)|浏览(187)

我尝试在react native typescript项目中使用我自己的typescript依赖项ioc-service-container
依赖项使用typescript属性装饰器,如下所示:

const service = new Service();
ServiceContainer.set('service', () => service);

class Foo {
  @inject
  service!: Service;
}

这对于reactJS、Vue和Node后端都很好用。但它在react native中不起作用。Foo的属性service仍然未定义。经过一些调试后,我发现传递给inject-decorator的属性是一个空对象,而不是类Foo。
我想问题是bable把我的代码...但我不确定
babel.config.js:

module.exports = {
  presets: ['module:metro-react-native-babel-preset'],
  plugins: [
    ['@babel/plugin-proposal-decorators', { 'legacy': true }], // required for @boundMethod decorator
  ],
};

tsconfig.json:

{
  "compilerOptions": {
    "target": "esnext",
    "module": "commonjs",
    // ...
    "experimentalDecorators": true,
  }
}
lhcgjxsq

lhcgjxsq1#

在tsconfig文件上使用emitDecoratorMetadata:true

相关问题