【发布时间】:2017-03-06 04:23:08
【问题描述】:
我想添加方法setStatePromisified 来响应组件的原型,我正在尝试使用装饰器来实现:
interface IPromisifiedComponent {
setStatePromise: (state) => Promise<void>
}
interface IPromisifiedComponentConstructor {
new (...args): IPromisifiedComponent;
readonly prototype: IPromisifiedComponent;
}
function promisifiedDecorator() {
return function (Component: IPromisifiedComponentConstructor) {
Component.prototype.setStatePromise = (state) => {
return new Promise<void>((resolve) => {
this.setState(state, () => {
resolve();
});
});
};
}
}
@promisifiedDecorator()
class TestComponent extends React.Component<any, any> implements IPromisifiedComponent {
}
Typescript 要求实现 setStatePromise 方法:Test 类型中缺少属性 setStatePromise。我该如何解决这个错误?
【问题讨论】:
-
implements IPromisifiedComponent表示您的TestComponent需要实现IPromisifiedComponent的方法(在您的情况下为setStatePromise)。 Typescript 无法知道你在装饰器中这样做 -
@Maxx
setStatePromise方法在装饰器内部实现 -
我编辑了我的评论
-
@Maxx 你有什么建议吗?
-
您可以使用
setStatePromise方法扩展React.Component并以此扩展您的组件
标签: javascript reactjs typescript decorator