我最近正在使用angular8。我是该框架的新手。
我正在尝试创建带有新元素的界面。我奇怪地注意到,在前两个字段中我没有问题。相反,当我去插入新的时,会出现以下棉绒错误消息:
src / app / weatherObject / weather-class.ts(27,17)中的错误:错误TS2345: 类型'{cityName:any;度数:影响:数量; }”不能分配给“ WeatherFeature”类型的参数。宾语 文字只能指定已知属性,而'impact'不能指定 类型为“ WeatherFeature”。
这是我的界面:
interface WeatherFeature {
cityName: string,
degrees: number,
impaction: number //REFUSED FIELD
// sky: string //READY TO BE PUT, But as long as impaction doesn't work I can't put it!
}
这是我为其分配值的类代码:
import { Injectable } from '@angular/core';
import { BehaviorSubject } from 'rxjs';
import { WeatherForecastApiService } from '../weatherForecastApiService/weather-forecast-api.service';
@Injectable({
providedIn: 'root',
})
export class WeatherClass {
public weatherFeature = new BehaviorSubject<WeatherFeature>(undefined);
constructor(
private wfas: WeatherForecastApiService,
) {
this.retriver();
}
private retriver() {
this.wfas.getItalyWeatherData('Pisa').subscribe((response) => {
const ks: string[] = ['name', 'main', 'temp', 'pressure', 'weather'];
console.log(response[ks[1]][ks[3]], response[ks[4]][0][ks[1]]);
this.weatherFeature.next({
cityName: response[ks[0]],
degrees: Number((response[ks[1]][ks[2]] - 273.15).toFixed()),
impaction: Number(response[ks[1]][ks[3]]) //WHY CAN I NOT PUT IT ???
});
});
}
}
我不明白为什么,尽管我扩展了接口,但是当我在类文件中的接口中插入新字段时,却收到了错误消息。
我希望这是一个愚蠢的错误,是对我的误解,仅此而已。
答案 0 :(得分:2)
使用分号;
代替逗号,
来定义属性。
export interface WeatherFeature {
cityName: string;
degrees: number;
impaction: number;
}
除非它与使用的文件位于同一文件中,否则不要忘记导出/导入它。
答案 1 :(得分:1)
您可能使用WeatherFeature编辑了错误的文件,也许是.bak