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

如何让TypeScript函数第二个参数根据首个参数的键自动提示对应值?

实现第二个参数根据第一个参数自动提示对应值

要让第二个参数根据选中的键自动提示JSON里的对应值,需要做两个关键调整:

  1. 将JSON数据断言为只读字面量类型:让TypeScript保留JSON中每个值的具体字面量信息,而非宽泛的string类型。
  2. 为第二个参数设置与键对应的默认值:结合函数默认参数特性,利用字面量类型触发自动提示。

完整代码示例

// 导入JSON数据并断言为只读字面量类型
import rawData from './data.json'
const data = rawData as const;

// 推导数据的字面量类型
type JsonData = typeof data;

function funcName<K extends keyof JsonData>(
  key: K,
  defaultValue: JsonData[K] = data[key] // 设置默认值触发自动提示
) {
  return data[key] || defaultValue;
}

// 调用示例:选中key1时,第二个参数会自动提示"hardcoded string"
funcName('key1'); // 直接使用默认值
funcName('key1', 'custom string'); // 也可传入同类型自定义值

关键调整说明

  • as const断言:将导入的JSON数据转换为只读字面量类型,此时JsonData[K]会是具体的"hardcoded string"或"another hardcoded string"字面量类型,而非宽泛的string,TypeScript就能识别并提示这些具体值。
  • 默认参数绑定:把defaultValue的默认值设为data[key],调用函数时,当你选择第一个参数为key1,编辑器会自动将"hardcoded string"作为第二个参数的提示选项,同时允许传入同类型的自定义值。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 21:24:56