打字稿:为什么我能够将一个字符串值分配给我声明的(接口)数字对象参数

时间:2017-11-14 12:06:21

标签: typescript

我已经宣布了一个界面:

export interface DateArray {
    year    : number;
}

我正在组件中声明一个新变量,如下所示:

private dateArray: DateArray = {
    year: null
};

在我的组件中,我为dateArray.year赋值,如:

this.dateArray.year = this.megaData[0][3];

现在我不明白的是,无论this.megaData[0][3]的值是什么(字符串,数字,数组),它都会被分配给this.dateArray.year而没有任何问题。

当我这样做时:

 this.dateArray.year = "A"

我收到错误“无法将字符串分配给数字”,但当this.megaData[0][3]的值为"A"时,我没有收到任何错误,输出结果为:

        this.dateArray.year = this.megaData[0][3];
        console.log("this.dateArray.year);

只是A

this.megaData现在被定义为<any>,这可能是问题吗?

1 个答案:

答案 0 :(得分:0)

  

this.megaData现在被定义为<any>,这可能是问题吗?

正确为any表示它也可以是或包含一个数字(声明的属性类型year ),因此赋值不会生成类型不匹配错误