【问题标题】:React typescript, Property 'propTypes' does not exist on type 'typeof TodoFilterItem'. TS2339反应打字稿,“typeof TodoFilterItem”类型上不存在属性“propTypes”。 TS2339
【发布时间】:2020-11-10 02:00:08
【问题描述】:

我有一个界面

interface ITodoFilterItem  {
  name: string,
  filter: string,
  filterTodos: any
}

以及在同一个文件中引用它的类

class TodoFilterItem extends Component<ITodoFilterItem> {
  constructor (props:ITodoFilterItem) {
    super(props);
    this.handleFilter = this.handleFilter.bind(this);
  }

但是当我尝试在这个文件的底部添加 propTypes 时

TodoFilterItem.propTypes = {
  name: PropTypes.string,
  filter: PropTypes.string,
  filterTodos: PropTypes.any
}

我明白了:


Property 'propTypes' does not exist on type 'typeof TodoFilterItem'.  TS2339

仅供参考:我在顶部有import PropTypes from 'prop-types';

【问题讨论】:

标签: reactjs typescript react-proptypes


【解决方案1】:

TS 要求在类定义中初始化所有静态属性。将以下内容添加到您的课程中,以确保 TS 可以正确分析课程。

static propTypes: {
   name: Requireable<string>;
   filter: Requireable<string>;
   filterTodos: Requireable<any>;
};
import React, { Component, Requireable } from 'react';
import PropTypes from 'prop-types';

interface ITodoFilterItem {
    name: string;
    filter: string;
    filterTodos: any;
}

class TodoFilterItem extends Component<ITodoFilterItem> {
    static propTypes: {
        name: Requireable<string>;
        filter: Requireable<string>;
        filterTodos: Requireable<any>;
    };

    constructor(props: ITodoFilterItem) {
        super(props);
        this.handleFilter = this.handleFilter.bind(this);
    }

    handleFilter() {}

    render() {
        return <span />;
    }
}

TodoFilterItem.propTypes = {
    name: PropTypes.string,
    filter: PropTypes.string,
    filterTodos: PropTypes.any,
};

export default TodoFilterItem;

【讨论】:

    猜你喜欢
    • 2020-12-18
    • 1970-01-01
    • 2018-08-02
    • 2022-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多