javascript - 使用 Typescript 时,如何创建类装饰器以将新方法混合到 React 组件中?

标签 javascript reactjs typescript types decorator

我目前正在尝试创建一个装饰器以将新方法混合到 React 组件中。我通过以下方式获得了预期的结果:

function testDecorator(target) {
  const testMethod = function testMethod() {
    return 'successfully mixed testMethod into component';
  };
  target.prototype.testMethod = testMethod;
}

@testDecorator
export class TestComponent extends React.Component<{}, {}> {
// ...
  render() {
    console.log('this.testMethod', this.testMethod());
    // outputs "successfully mixed testMethod into component"
  }
}

这会编译并输出预期值,但会产生编译器错误:“TestComponent”类型上不存在属性“testMethod”。有没有办法避免错误? IE。是否可以通过装饰器向 Typescript 传授有关混合到(React 组件)类中的值?

最佳答案

现在除了通过转换为 any 或定义了此方法的接口(interface)来删除类型检查外,没有其他方法可以忽略错误。

这是待处理的请求:Class Decorator Mutation

关于javascript - 使用 Typescript 时,如何创建类装饰器以将新方法混合到 React 组件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39202671/

相关文章:

javascript - 单击复选框时从 json 中删除第一个对象 - AngularJs + NodeJs

javascript - React - 更新状态(对象数组)。我需要深拷贝数组吗?

typescript - 如何使用嵌套接口(interface)限定 TypeScript 泛型类型的范围

angular - 在 angular4 中发布数据时是否发生缺少参数 : email, 密码错误?

angular - ionic 2.1.8 错误 : Requirements check failed for JDK 1. 8 或更大

javascript - 如何在node js中模块化代码

javascript - 保持布局不变,但在移动设备上缩小布局

javascript - 如何编写一个输出 react 传单标记的组件?

javascript - React JS - 访问元素属性中的组件属性

javascript - 如何使 SVG 与 IE 一起工作?