我收到错误TS2345:X类型的参数无法分配给Y类型的参数

时间:2019-11-07 08:40:15

标签: angular typescript angular8

我最近正在使用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 ???
            });
        });
    }
}

我不明白为什么,尽管我扩展了接口,但是当我在类文件中的接口中插入新字段时,却收到了错误消息。

我希望这是一个愚蠢的错误,是对我的误解,仅此而已。

2 个答案:

答案 0 :(得分:2)

使用分号;代替逗号,来定义属性。

export interface WeatherFeature {
    cityName: string;
    degrees: number;
    impaction: number;
}

除非它与使用的文件位于同一文件中,否则不要忘记导出/导入它。

答案 1 :(得分:1)

您可能使用WeatherFeature编辑了错误的文件,也许是.bak