我正在尝试找到一种方法,当调用 Type 成员但不存在时触发控制台 lint 错误(甚至构建错误)。目前,我必须知道并打开有问题的文件才能看到错误。这使得将错误发送到生产环境变得很容易。看看 eslint 和 typescript-eslint,似乎没有这方面的规则。有人建议添加此检查吗?
我正在使用 Vite 构建工具,以及通过 Bitbucket 的 SonarCloud。
eslint 配置
module.exports = {
root: true,
env: { browser: true, es2020: true },
extends: ['eslint:recommended', 'plugin:@typescript-eslint/recommended', 'plugin:react-hooks/recommended'],
ignorePatterns: ['dist', '.eslintrc.cjs'],
parser: '@typescript-eslint/parser',
plugins: ['react-refresh'],
rules: {
'react-refresh/only-export-components': ['warn', { allowConstantExport: true }],
'@typescript-eslint/no-explicit-any': 'warn'
}
}
问题
export enum ExampleItem {
Item1: 'Item 1',
Item2: 'Item 2',
Item3: 'Item 3' //was deleted from file without a proper regression test
}
const item3 = ExampleItem.Item3; //does not exist, how to error this in console?
'@typescript-eslint/no-unsafe-assignment'
fake - 发现错误。但是添加 /* eslint-disable @typescript-eslint/no-unsafe-assignment */
会禁用文件中的特定错误,并且仍然会留下丢失的 Type 成员而不对其进行标记。
而且,这可能真的要求为任何类型的缺失对象成员找到一个 linter。
Eslint 不会将此标记为错误(因为它不验证类型),但 TypeScript 的类型检查器 (
tsc
) 会。
export enum ExampleItem {
Item1 = 'Item 1',
Item2 = 'Item 2',
}
const item3 = ExampleItem.Item3; // Error: Property 'Item3' does not exist on type 'typeof ExampleItem'.