TypeScript中如何声明带类型的变量接收返回record的函数的返回值?
错误原因
你的写法把number识别成了解构的重命名目标,而非类型标注:TS 中解构语法里x: number的语义是「把对象的x属性赋值给名为number的新变量」,你同时给x和y都指定了重命名为number,自然会触发重复声明块级变量的报错。
正确实现
方案1:利用自动类型推断
只要你用到的item函数的类型定义是准确的,不需要额外手动标注类型,TS 会自动推断出返回值里x、y的类型:
const { x, y } = await data.item(id);
此时x、y都会自动获得number类型的提示。
方案2:手动标注类型
如果需要显式标注类型,要把类型定义写在整个解构表达式的后方:
const { x, y }: { x: number; y: number } = await data.item(id);
如果你还要用到返回值的元组部分,也可以对应标注元组的类型:
// 同时取元组值和对象属性 const [val1, val2, x, y]: [number, number, number, number] = await data.item(id); // 只取元组值 const [val1, val2]: [number, number] = await data.item(id);
内容的提问来源于stack exchange,提问作者delete
相关产品推荐
相关产品推荐

