使用 TypeScript 做出反应,不要将 {} 用作类型。 {

React using TypeScript, Don't use {} as a type. {

我在使用 React 和 TypeScript 时在我的 Contact 组件中收到 ESlint 错误 Don't use `{}` as a type. `{}` actually means "any non-nullish value".

该组件没有任何道具。

export default class Contact extends React.Component<{}, MyState> {
    constructor(props = {}) {
        super(props);
        this.state = {
            signedUp: false,
        };
    }
}

我尝试使用 null 代替,但这引发了其他 ESLint 错误。

经过大量挖掘,我发现了以下 GitHub 个问题。

通过将以下内容添加到您的 .eslintrc.js 您可以忽略该规则。建议使用 Configurations 使此规则仅适用于 React 组件。这将确保其他地方的强类型化。

  "rules": {
    "@typescript-eslint/ban-types": [
      "error",
      {
        "extendDefaults": true,
        "types": {
          "{}": false
        }
      }
    ]
  }
}

来源:https://github.com/typescript-eslint/typescript-eslint/issues/2063#issuecomment-675156492

扩展 Jordan 答案以仅将此规则应用于 .eslintrc.js 文件中的 React 组件添加

overrides: [
    {
        files: ['*.tsx, *.jsx'],
        rules: {
            '@typescript-eslint/ban-types': [
                'error',
                {
                    extendDefaults: true,
                    types: {
                        '{}': false,
                    },
                },
            ],
        },
    },
]