如何为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
相关产品推荐
相关产品推荐

