@typescript-eslint/member-delimiter-style
要求接口和类型别名中的成员之间使用特定的分隔符。
支持定义的分隔符有三种:分号、逗号、无分隔符。
规则配置
// code-linter.json5
{
"rules": {
"@typescript-eslint/member-delimiter-style": "error"
}
}
选项
支持配置以下选项:
type BaseOption = {
multiline: {
delimiter: 'none' | 'semi' | 'comma';
requireLast: boolean;
};
singleline: {
delimiter: 'semi' | 'comma';
requireLast: boolean;
};
}
type Options = {
multiline: {
delimiter: 'none' | 'semi' | 'comma';
requireLast: boolean;
};
singleline: {
delimiter: 'semi' | 'comma';
requireLast: boolean;
};
overrides: {
interface: BaseOption;
typeLiteral: BaseOption;
};
multilineDetection: 'brackets' | 'last-member';
}
-
multiline/singleline:对象类型,分别定义多行/单行的interface/type alias成员之间分隔符风格,支持以下两种属性:
- delimiter:枚举类型,定义分隔符风格,取值范围如下:
- none:表示不需要加分隔符。
- semi:表示建议使用分号作为分隔符。
- comma:表示建议使用逗号作为分隔符。
- requireLast:布尔类型,可以设置为true或者false,true表示最后一个成员的末尾需要加分隔符,false表示最后一个成员的末尾不加分隔符。
- delimiter:枚举类型,定义分隔符风格,取值范围如下:
-
multilineDetection:枚举类型,判断多行的依据,可取值如下:
- brackets:默认值,表示interface/type alias中存在换行,即视为多行。
- last-member:表示interface/type alias的最后一个成员与右括号(“}”)处于同一行,则视为单行。
-
overrides:对象类型,可以针对interface/type alias进行差异化配置,支持以下两种属性:
- interface:对象类型,可以对interface进行差异化配置,配置方式同multiline/singleline。
- typeLiteral:对象类型,可以对type alias进行差异化配置,配置方式同multiline/singleline。
示例:
"@typescript-eslint/member-delimiter-style": [
"error",
{
// 多行interface/type alias使用逗号作为分隔符,最后一个成员末尾不加分隔符
"multiline": {
"delimiter": "comma",
"requireLast": false
},
// 单行interface/type alias使用分号作为分隔符,最后一个成员末尾需要加分隔符
"singleline": {
"delimiter": "semi",
"requireLast": true
},
// 分别对interface和type alias进行差异化配置
overrides: {
interface: {
"multiline": {
"delimiter": "comma",
"requireLast": false
},
"singleline": {
"delimiter": "semi",
"requireLast": true
}
},
typeLiteral: {
"multiline": {
"delimiter": "comma",
"requireLast": false
},
"singleline": {
"delimiter": "semi",
"requireLast": true
}
}
},
multilineDetection: "brackets",
},
]
正例
// 默认接口/类型别名定义为多行的场景下,每个成员应以分号 (;) 分隔。 最后一个成员必须有一个分隔符。
// 默认接口/类型别名定义为单行的场景下,每个成员应以分号 (;) 分隔。最后一个成员不能有分隔符。
// 接口/类型别名中的任何换行符都会使其成为多行。
export interface Foo1 {
name: string;
greet(): string;
}
export interface Foo2 { name: string }
反例
// missing semicolon delimiter
export interface Foo {
name: string
greet(): string
}
// using incorrect delimiter
export interface Bar {
name: string,
greet(): string,
}
// missing last member delimiter
export interface Baz {
name: string;
greet(): string
}
规则集
plugin:@typescript-eslint/all
Code Linter代码检查规则的配置指导请参考Code Linter代码检查。