You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为ESLint规则指定含对象数组的Schema?

自定义ESLint规则的Schema配置问题

我正尝试为自定义ESLint规则配置Schema,预期配置格式如下:

'my-rule': ['error', [
  {'any-key': ['array', 'of', 'strings']},
  {'some-other-key': ['array', 'of', 'strings']},
  // ... 更多类似对象
]]

我需要允许任意非枚举属性名,但不确定如何指定这些属性的值类型。当前我的Schema代码如下:

schema: [
    {
        type: 'array',
        items: {
            type: 'object',
            propertyNames: {
                type: 'string',
                // ???—— 这里该怎么指定值为字符串数组?
            },
        }
    }
],

请问这个配置是否可行?


解答

当前的配置不可行,因为propertyNames仅用于约束对象属性名的格式(比如这里指定属性名必须是字符串),但它无法定义属性值的类型。要实现“任意属性名,但属性值必须是字符串数组”的约束,你需要使用additionalProperties字段来定义任意属性的值规则。

修正后的Schema代码如下:

schema: [
    {
        type: 'array',
        items: {
            type: 'object',
            // 允许任意字符串类型的属性名
            propertyNames: {
                type: 'string'
            },
            // 定义所有属性的值必须是字符串数组
            additionalProperties: {
                type: 'array',
                items: {
                    type: 'string'
                }
            }
        }
    }
],

说明

  • 外层的数组结构符合ESLint规则Schema的要求:对应规则配置中['error', ...]里的第二个参数(即规则的自定义配置项)。
  • propertyNames确保对象的属性名都是字符串,满足你“任意非枚举属性名”的需求。
  • additionalProperties明确规定了每个属性的值必须是由字符串组成的数组,完全匹配你预期的配置格式。

内容的提问来源于stack exchange,提问作者user776686

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.31 09:30:59