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

如何在符合ESLint规则下定义含函数的TypeScript对象类型?

合规的类型定义方案

你可以通过明确定义函数类型来替代any和Function,既满足ESLint规则,又能保留完整的类型校验:

方案1:自定义函数类型+索引签名

先声明一个专用于该场景的函数类型,再用它作为索引签名的值类型:

// 定义接收string参数、返回string的函数类型
type StringProcessor = (v: string) => string;

const someDefinitions: { [key: string]: StringProcessor } = {
    A: (v: string): string => 'Returning A',
    B: (v: string): string => 'Returning B with ' + v,
    C: (v: string): string => 'Returning C',
};

方案2:使用Record工具类型(更简洁)

TypeScript内置的Record工具类型可以直接生成键值对结构的类型,写法更紧凑:

const someDefinitions: Record<string, (v: string) => string> = {
    A: (v: string): string => 'Returning A',
    B: (v: string): string => 'Returning B with ' + v,
    C: (v: string): string => 'Returning C',
};

为什么这样合规?

  • 替代any:明确的函数类型保留了参数和返回值的类型校验,避免类型丢失
  • 替代Function:Function是宽泛的顶层类型,无法约束参数和返回值,而明确的(v: string) => string类型能确保所有属性值都符合预期的函数签名,完美适配你的动态调用场景

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 03:12:16