如何访问嵌套的接口类型

时间:2017-11-01 21:08:15

标签: typescript interface nested

我有一个接口,第二个接口的值如下所示。但是当我尝试访问嵌套值时,我收到一个错误。访问嵌套接口值的正确方法是什么?

interface Results {
    pass: number;
    fail: number;
}

interface Build {
    name: string;
    results: Results;
}

var obj: Build = {
    name: "test",
    results: {
        pass: 3,
        fail: 2
    }
}

目前,我试图像没有运气那样访问它:

obj.results.pass

错误我得到:错误类型错误:无法设置属性'传递'未定义的

2 个答案:

答案 0 :(得分:0)

您遇到的错误是运行时错误(JavaScript执行引擎),而不是编译错误(TypeScript编译器)。

这是因为undefined等于const test: Build = {}; test.results.pass; // ERROR TypeError: Cannot set property 'pass' of undefined

results

我建议您在访问其子属性之前检查if (test.results) { test.results.pass; } 属性值:

GroupContainer

答案 1 :(得分:-1)

对于后来看到这个的人,我不得不在obj中创建一个Result对象,例如:

this.build["results"].pass = #
this.build["results"].fail = #

然后能够通过访问和更改传递和失败,如下所示:

<app-comp [item]="item"></app-comp>