I have a small weather app. All works fine in browser, but I'm getting errors from TS compiler: property name, main, wind does not exist on type Weather[]. But seems like I added these properties in class Weather[]...
export class AppComponent implements OnInit { weather:Weather[]; temp:string; pressure:number; humidity:number; wind_speed:number; wind_dec:number; city:string; activeId:string = "Misto Kyyiv"; constructor(private getWeatherService:GetWeatherService) {} ngOnInit() { this.getWeatherService.getWeather("Misto Kyyiv").subscribe(weather => { this.weather = weather; this.temp = (weather.main.temp -273.15).toFixed(2); this.pressure = weather.main.pressure; this.humidity = weather.main.humidity; this.wind_speed = weather.wind.speed; this.wind_dec = weather.wind.deg; this.city = weather.name; console.log(this.weather); console.log(this.temp); }); } export class Weather { main:any = {}; wind:any = {}; temp:number; pressure:number; humidity:number; wind_speed:number; wind_dec:number; city:string; activeId:string; name:string; } //Get Weather //it worked when I changed here Weather[] to Weather !!! getWeather(city:string):Observable<Weather> { let key = "c2dcf8ffb5cdc3f8977bfd2ae7ea4738"; let url = "http://api.openweathermap.org/data/2.5/weather?q=" + city + "&?units=metric&APPID=" + key; return this.http.get<Weather>(url); }
Weather[]is not the typeWeather. It's the type of an array of Weather objects. An array has a length. But it doesn't have a name or a wind.getWeather("Misto Kyyiv")supposed to provide one Weather object, or an array of 0 to N Weather objects? If it's supposed to provide just one, then its signature, and probably its code, should be fixed. If it's supposed to provide an array, then what are you supposed to do with the elements of this array?