member-delimiter-style
TypeScript 允许在接口和类型别名中的成员之间使用三种分隔符
ts
interface Foo {
// Semicolons (default, preferred in TypeScript):
name: string;
// Commas (JSON-like):
name: string,
// Line breaks (none):
name: string
}为了代码可读性,通常最好在代码库中始终使用相同的样式。
此规则强制执行保持一种可配置的代码样式。它还可以标准化构造中最后一个成员中分隔符的存在(或不存在),以及单行声明的单独分隔符语法。
选项
默认配置
json
{
"multiline": {
"delimiter": "semi",
"requireLast": true
},
"singleline": {
"delimiter": "semi",
"requireLast": false
},
"multilineDetection": "brackets"
}multiline 配置仅适用于多行 interface/type 定义。singleline 配置仅适用于单行 interface/type 定义。这两个配置是完全独立的,不会相互影响。
multilineDetection 确定什么算作多行
"brackets"(默认)类型或接口中的任何换行符都使其成为多行。"last-member"如果接口的最后一个成员与最后一个括号在同一行,则将其计为单行。
delimiter
接受三个值(或 singleline 的两个值)
comma- 每个成员都应该用逗号 (,) 分隔。semi- 每个成员都应该用分号 (;) 分隔。none- 每个成员都应该用空分隔。
:::note none 不是 singleline 的选项,因为在单行上成员之间没有分隔符在 TS 中是语法错误。 ::
requireLast
确定 interface/type 中的最后一个成员是否应该有分隔符
true- 最后一个成员**必须**有分隔符。false- 最后一个成员**不能**有分隔符。
overrides
允许您为interface或type定义/内联type指定特定选项。
例如,要求type使用逗号,而多行interface使用分号。
json
{
"multiline": {
"delimiter": "comma",
"requireLast": true
},
"singleline": {
"delimiter": "comma",
"requireLast": true
},
"overrides": {
"interface": {
"multiline": {
"delimiter": "semi",
"requireLast": true
}
}
}
}示例
使用默认配置的此规则的代码示例
ts
/*eslint @stylistic/ts/member-delimiter-style: "error"*/
// missing semicolon delimiter
interface Foo {
name: string
greet(): string
}
// using incorrect delimiter
interface Bar {
name: string,
greet(): string,
}
// missing last member delimiter
interface Baz {
name: string;
greet(): string
}
// incorrect delimiter
type FooBar = { name: string, greet(): string }
// last member should not have delimiter
type FooBar = { name: string; greet(): string; }ts
/*eslint @stylistic/ts/member-delimiter-style: "error"*/
interface Foo {
name: string;
greet(): string;
}
interface Foo { name: string }
type Bar = {
name: string;
greet(): string;
}
type Bar = { name: string }
type FooBar = { name: string; greet(): string }何时不使用它
如果您不关心在接口和类型字面量中强制使用一致的成员分隔符,那么您将不需要此规则。
正确
错误