ES6语法解构对象+实现接口



我正在浏览一个代码库,并遇到了复杂的语法

return json?.result?.map(
({ text: label, value }: { text: string; value: any }) => ({
label,
value,
}),
);

我模糊地理解(如果我错了,请纠正我(类似的东西

对于json对象的每个结果,运行一个函数,该函数将一个对象作为参数并返回另一个对象。

该参数实现了与该: { text: string; value: any }的接口

虽然{ text: label, value },但我不明白这里发生了什么。label不是在任何地方声明的变量。

{ text: label, value }是一个析构函数赋值,与typescript没有任何关系。它获取某个对象,并将其键"value"绑定到名为value的局部变量,将其密钥"text"绑定到某个名为"label"的局部变量。

例如:

const testObj = {
text: "text",
value: "value"
}
const printTestObj = ({ text: label, value }) => {
console.log("label = " + label)
console.log("value = " + value)
}
printTestObj(testObj)

此功能在TypeScript手册中被称为属性重命名,是对象析构函数的高级形式。

您对json结构的评估是正确的,它的类型似乎是Optional<{result?: {text: string, value: any}[]}>。因此,包含上述片段的函数的ReturnTypeOptional<{label: string, value: any}[]>

最新更新