async function getWeather(cityid: number){
var weather = await getForecast(cityid);
var {t: temperature, h: humidity} = weather;
return { temperature, humidity};
}
我理解async / await,但我想了解最后两行的情况。
var {t: temperature, h: humidity} = weather;
据我所知,这是创建一个具有两个属性的var,类型温度为t,湿度类型为h。
return { temperature, humidity};
对我来说,这看起来像是在返回一个带有两个子对象,温度和湿度的新对象。我不知道它是如何从天气对象那里得到的。
我不知道这是一个javascript问题,还是一个打字稿问题,因此我将其标记为两者。
答案 0 :(得分:5)
var {t:temperature,h:humidity} = weather;
这称为解构。这是一个概念:https://basarat.gitbooks.io/typescript/content/docs/destructuring.html
您要说的是weather.t
将temprature
和weather.h
放入humidity
返回{温度,湿度};
这将返回一个包含属性temprature
和humidity
的对象。这是:return { temperature:temperature, humidity:humidity};
的简写。这是ES6中的新标记之一:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Object_initializer
答案 1 :(得分:4)
var {t: temperature, h: humidity} = weather;
是来自ES6的一个非常强大的新语法功能,名为destructing。
假设weather
是对象{ t: 60, h: 20 }
。传统上,当我们想要将weather
的属性分配给局部变量时,我们会做类似的事情:
var temperature = weather.temperature;
var humidity = weather.humidity;
这非常不方便,随着物体变得越来越复杂,它将越来越无聊。通过破坏,我们现在可以使用
var {t: temperature, h: humidity} = weather;
console.log(temperature); // 60
console.log(humidity); // 20
并且已经定义了本地变量temperature
和humidity
并准备好使用。
解构还为" target"的情况提供了更短的语法。变量与" source"相同。变量。在weather
的情况下,而不是写:
var {t: t, h: h} = weather;
console.log(t); // 60
console.log(h); // 60
我们可以写:
var {t, h} = weather;
console.log(t); // 60
console.log(h); // 60