TypeScript类和接口

时间:2015-12-17 15:57:18

标签: typescript

我有以下打字稿代码: -

    export class Parent {
    name: string;
    details: Details = {};
}

export interface Details {
    age?: number;
    address?: Address};
}

export interface Address {
    address1: string;
    address2: string;
}

然后我可以引用此代码来设置一些值: -

var myOptions = new HSCIC.Visualisation.Services.Parent();

myOptions.name = "Chris";
myOptions.details.age = 25;
myOptions.details.address.address1 = "10 The Lane";

前两个安装人员工作正常,但我得到了一个“无法设置属性'地址1' ' undefined'。

如果我可以从详细信息设置年龄属性,那么为什么我不能设置Address的address1属性,我该如何解决?

1 个答案:

答案 0 :(得分:1)

因为你写道:

address?: Address};

但是为了使代码有效,它应该是:

address?: Address = {address1: null, address2: null};

您需要为地址指定一个值,就像在details: Details = {};中一样,或者它将是未定义的。要做到这一点,需要将Details定义为类,而不是接口。编写: Address不会实例化新类,它只指定类型。或者,您可以使用?将地址1和2设为可选,然后只需编写address?: Address = {};

如果您不想将详细信息定义为类,则可以在Parent下编写details: Details = {address:{}};