跳至主要内容

一致的索引对象风格

要求或禁止使用 Record 类型。

🎨

"plugin:@typescript-eslint/stylistic" 中扩展 ESLint 配置文件 可以启用此规则。

🔧

此规则报告的一些问题可以通过 --fix ESLint 命令行选项 自动修复。

TypeScript 支持使用索引签名定义任意对象键。TypeScript 还内置了一个名为 Record 的类型来创建一个仅定义索引签名的空对象。例如,以下类型是相等的

interface Foo {
[key: string]: unknown;
}

type Foo = {
[key: string]: unknown;
};

type Foo = Record<string, unknown>;

保持一致的声明形式可以提高代码可读性。

.eslintrc.cjs
module.exports = {
"rules": {
"@typescript-eslint/consistent-indexed-object-style": "error"
}
};

在游乐场中尝试此规则 ↗

选项

此规则接受以下选项

type Options = ['index-signature' | 'record'];

const defaultOptions: Options = ['record'];
  • "record" (默认):仅允许 Record 类型。
  • "index-signature":仅允许索引签名。

record

interface Foo {
[key: string]: unknown;
}

type Foo = {
[key: string]: unknown;
};
在游乐场中打开

index-signature

type Foo = Record<string, unknown>;
在游乐场中打开

何时不使用它

此规则纯粹是用于维护项目一致性的风格规则。如果您不想为索引对象类型保持一致的风格,可以将其关闭。

但是,请记住,不一致的风格可能会损害项目的可读性。我们建议为该规则选择一个最适合您的项目的选项。

资源