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

如何为Node.js中updateValues函数实现键值类型匹配约束?

实现key与value类型匹配的updateValues函数

你可以通过泛型结合索引访问类型来实现这个需求,让TypeScript自动根据传入的key约束value的类型。具体修改如下:

type IStore = {
  name: string;
  startDate: Date;
  id: string;
  logins: number;
}

// 泛型函数:绑定key和对应value的类型
function updateValues<K extends keyof IStore>(key: K, value: IStore[K]) {
  // 这里编写你的异步存储逻辑,比如:
  // await AsyncStorage.setItem(key, JSON.stringify(value));
}

// 正确调用示例(TypeScript会通过类型检查)
updateValues("name", "1234"); // value为string,匹配name的类型
updateValues("startDate", new Date()); // value为Date,匹配startDate的类型
updateValues("logins", 3); // value为number,匹配logins的类型

// 错误调用示例(TypeScript会直接报错提示类型不匹配)
updateValues("name", 123); // 期望string,传入了number
updateValues("startDate", "2024-05-20"); // 期望Date,传入了string

关键部分解释

  • <K extends keyof IStore>:声明泛型参数K,extends keyof IStore限制K只能是IStore中存在的键(也就是"name"、"startDate"、"id"、"logins"中的一个)。
  • key: K:指定第一个参数key的类型为K,也就是我们选中的IStore的某个键。
  • value: IStore[K]:这是索引访问类型,意思是“取IStore类型中键为K对应的值的类型”。比如当K是"name"时,IStore[K]就是string;当K是"startDate"时,IStore[K]就是Date,这样就实现了key和value的类型一一对应。

这样修改后,TypeScript会在编译阶段就帮你检查参数类型是否匹配,避免传入错误类型的值导致运行时问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 04:40:00