我尝试在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,
}
}
1条答案
按热度按时间lhcgjxsq1#
在tsconfig文件上使用emitDecoratorMetadata:true