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

如何基于传入的数组参数推导Record的键并实现对应TypeScript类型定义

实现方案

直接通过TypeScript泛型约束入参类型,即可自动推导返回值的键类型,完整实现代码如下:

const createConstants = <T extends PropertyKey>(...keys: T[]): Record<T, T> => {
  const record = {} as Record<T, T>;
  keys.forEach(key => {
    record[key] = key;
  });
  return record;
};

说明

  • T extends PropertyKey 是TypeScript内置的类型约束,限定入参只能是可作为对象键的类型(string/number/symbol),符合JS语法规则
  • 入参被推导为泛型T的数组后,返回值Record<T, T>会自动生成键和值都匹配入参的类型结构,完全符合键值相等的需求
  • 调用时不需要额外手动声明类型,TS会自动根据入参推导返回值类型

使用示例

const TODO_ACTIONS = createConstants('ADD_TODO', 'DELETE_TODO', 'TOGGLE_TODO');
// 自动推导类型为:Record<'ADD_TODO' | 'DELETE_TODO' | 'TOGGLE_TODO', 'ADD_TODO' | 'DELETE_TODO' | 'TOGGLE_TODO'>

// 有完整的智能提示,访问不存在的属性会直接触发类型报错
console.log(TODO_ACTIONS.ADD_TODO) // 输出 'ADD_TODO',类型正确

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 12:06:02