如何让TypeScript函数第二个参数根据首个参数的键自动提示对应值?
实现第二个参数根据第一个参数自动提示对应值
要让第二个参数根据选中的键自动提示JSON里的对应值,需要做两个关键调整:
- 将JSON数据断言为只读字面量类型:让TypeScript保留JSON中每个值的具体字面量信息,而非宽泛的
string类型。 - 为第二个参数设置与键对应的默认值:结合函数默认参数特性,利用字面量类型触发自动提示。
完整代码示例
// 导入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
相关产品推荐
相关产品推荐

