一致类型导出
强制一致使用类型导出。
🔧
此规则报告的一些问题可以通过 --fix
ESLint 命令行选项 自动修复。
💭
此规则需要 类型信息 才能运行。
TypeScript 允许在导出中指定 type
关键字以指示导出仅存在于类型系统中,而不是在运行时。这允许转译器在不知道依赖项类型的情况下删除导出。
有关更多详细信息,请参阅 博客 > 一致的类型导出和导入:为什么以及如何。
.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/consistent-type-exports": "error"
}
};
在游乐场中尝试此规则 ↗
示例
- ❌ 错误
- ✅ 正确
interface ButtonProps {
onClick: () => void;
}
class Button implements ButtonProps {
onClick = () => console.log('button!');
}
export { Button, ButtonProps };
在游乐场中打开interface ButtonProps {
onClick: () => void;
}
class Button implements ButtonProps {
onClick = () => console.log('button!');
}
export { Button };
export type { ButtonProps };
在游乐场中打开选项
此规则接受以下选项
type Options = [
{
fixMixedExportsWithInlineTypeSpecifier?: boolean;
},
];
const defaultOptions: Options = [
{ fixMixedExportsWithInlineTypeSpecifier: false },
];
fixMixedExportsWithInlineTypeSpecifier
当此选项设置为 true 时,该规则将使用 TS 4.5 的“内联类型说明符”自动修复“混合”导出情况。如果您使用的 TypeScript 版本低于 4.5,则无法使用此选项。
例如,以下代码
const x = 1;
type T = number;
export { x, T };
使用 {fixMixedExportsWithInlineTypeSpecifier: true}
将被修复为
const x = 1;
type T = number;
export { x, type T };
使用 {fixMixedExportsWithInlineTypeSpecifier: false}
将被修复为
const x = 1;
type T = number;
export type { T };
export { x };
何时不使用它
如果您使用 --isolatedModules
,则编译器会在类型未使用 export type
重新导出时报错。在这种情况下,此规则可能不太有用。
如果您出于风格原因特别想使用两种导出方式,或者不想强制执行一种风格,可以避免使用此规则。
但是,请记住,不一致的风格会损害项目的可读性。我们建议为该规则选择一个最适合您的项目的选项。
类型检查的 lint 规则比传统的 lint 规则更强大,但也需要配置 类型检查的 lint。如果您在启用类型检查的规则后遇到性能下降,请参阅 性能故障排除。