Skip to content

useExportType

¥Summary

¥How to configure

biome.json
{
"linter": {
"rules": {
"style": {
"useExportType": "error"
}
}
}
}

¥Description

提倡使用 export type 作为类型。

¥Promotes the use of export type for types.

TypeScript 允许在 export 类型上添加 type 关键字,以表明运行时不存在 export 类型。这允许编译器安全地丢弃类型的导出,而无需查找其定义。

¥TypeScript allows adding the type keyword on an export to indicate that the export doesn’t exist at runtime. This allows compilers to safely drop exports of types without looking for their definition.

该规则确保使用仅类型的 export 导出类型。它还将内联类型导出分组到分组的 export type 中。

¥The rule ensures that types are exported using a type-only export. It also groups inline type exports into a grouped export type.

¥Examples

¥Invalid

interface I {}
export { I };
code-block.ts:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

All exports are only types.

1 │ interface I {}
> 2 │ export { I };
^^^^^^
3 │

Using export type allows compilers to safely drop exports of types without looking for their definition.

Safe fix: Use export type.

2 │ export·type·{·I·};
+++++
type T = number;
export { T };
code-block.ts:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

All exports are only types.

1 │ type T = number;
> 2 │ export { T };
^^^^^^
3 │

Using export type allows compilers to safely drop exports of types without looking for their definition.

Safe fix: Use export type.

2 │ export·type·{·T·};
+++++
import type { T } from "./mod.js";
export { T };
code-block.ts:2:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

All exports are only types.

1 │ import type { T } from “./mod.js”;
> 2 │ export { T };
^^^^^^
3 │

Using export type allows compilers to safely drop exports of types without looking for their definition.

Safe fix: Use export type.

2 │ export·type·{·T·};
+++++
export { type X, type Y };
code-block.ts:1:8 lint/style/useExportType  FIXABLE  ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

All exports are only types.

> 1 │ export { type X, type Y };
^^^^^^^^^^^^^^^^^^^
2 │

Using export type allows compilers to safely drop exports of types without looking for their definition.

Safe fix: Use export type.

1 - export·{·type·X,·type·Y·};
1+ export·type·{·X,·Y·};
2 2

¥Valid

class C {}
function f() {}
export { C, f };

此规则仅检查文件中定义的标识符。它不会对在重新导出子句中作为值导出的类型发出警告,例如:

¥This rules checks only the identifiers that are defined in a file. It doesn’t warn against a type exported as a value in a re-export clause such as:

export { TypeA } from "./mod.ts"

¥Related links