跳至主要内容

一致类型导出

强制一致使用类型导出。

🔧

此规则报告的一些问题可以通过 --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 };
在游乐场中打开

选项

此规则接受以下选项

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。如果您在启用类型检查的规则后遇到性能下降,请参阅 性能故障排除

资源