对象上不存在Typescript编译器错误属性

时间:2016-10-24 01:15:41

标签: angular typescript

我收到打字稿错误'属性不存在于对象'来自我的打字稿文件。我已经阅读了几篇关于此的帖子,但我仍然不确定如何实施这项工作。

我有一个JSON对象有两个属性,我解压缩它所以我可以直接访问这两个值,这很好,只是编译时我收到错误。

payload: {
   value1: '',
   value2: ''
}

我的私人方法是问题的来源。

private update(respo : Object) : void {

    if (respo.hasOwnProperty('value1') || respo.hasOwnProperty('value2')) {
        (<FormControl>this.controlGroup.controls['ctrlone']).setValue(respo.value1);

        (<FormControl>this.controlGroup.controls['ctrltwo']).setValue(respo.value2);
    }
}

我尝试导出如下所示的界面但是我收到了控制台错误&#39;?参数未找到&#39;

 interface responseObject {
    value1?: string
    value2?: string
 }

感谢任何帮助。我使用的是typescript 1.8。

吉米亨德里。

1 个答案:

答案 0 :(得分:3)

您的问题似乎与type参数有关。不要输入Object。虽然我不确定您的界面有什么问题(可能是您缺少分号?)

这对我有用:

interface responseObject {
    value1?: string;
    value2?: string;
}

class SomeClass {
    private update(respo : responseObject) : void {
        if (respo.hasOwnProperty('value1') || respo.hasOwnProperty('value2')) {
            (<FormControl>this.controlGroup.controls['ctrlone']).setValue(respo.value1);

            (<FormControl>this.controlGroup.controls['ctrltwo']).setValue(respo.value2);
        }
    }
}

当您输入Object的内容时,编译器知道的唯一属性是Object上存在的属性。制作一个界面绝对是正确的方式来实现这一目标(对你来说非常好!)但是在将来,&#34;解决方法&#34;你可能正在寻找的是any类型。