react + typescript 的时候,使用修饰器,编译报错?

喵喵大人1
  • 45
function dectest(target: any) {
    target.prototype.name = 'isfufeng'
}

@dectest
export default class Home extends React.Component<Props, State> {
    constructor(props: any) {
        super(props)
    }
}

先是使用了这个往里面添加一个name类,但是编译时报错

Module not found: Error: Can't resolve 'babel-runtime/core-js/reflect/metadata' in 'd:\allpro\reactdom\reactM\reactAdmin\src\components\home'

后面又使用了 react-redux 的connect方法。

作为表达式调用时,无法解析类修饰器的签名。
  不能将类型“ComponentClass<Pick<any, never>> & { WrappedComponent: ComponentType<any>; }”分配给类型“typeof Home”。
    不能将类型“Component<Pick<any, never>, ComponentState>”分配给类型“Home”。
      属性“componentDidMount”在类型“Component<Pick<any, never>, ComponentState>”中为可选,但在类型“Home”中为必选。

在.babelrc里面添加了

"plugins": [
        "react-hot-loader/babel",
        "transform-decorators-legacy",
        "transform-runtime",
        "transform-class-properties"
    ],

有大神知道怎么解决嘛。

回复
阅读 4.3k
2 个回答

你好,这个解决了吗,怎么处理的

import { State } from "./reducers";
import { MapDispatchToPropsParam, connect as ConnectRedux } from "react-redux";

export function connect<TDispatchProps = {}, TOwnProps = any>(
  mapStateToProps?: (state: State, ownProps?: TOwnProps) => any,
  mapDispatchToProps?: MapDispatchToPropsParam<TDispatchProps, TOwnProps>
): any {
  return ConnectRedux(mapStateToProps, mapDispatchToProps);
}
@connect(state => {
  const pathname = state.router.location.pathname;
  return {}
})
你知道吗?

宣传栏