扩展与另一个的接口

时间:2016-01-26 18:25:09

标签: typescript

基本上我想扩展用户界面,如下图所示,这是这样做的吗?除了数据字段之外的所有内容都已正确填充并使用“UserInterface extends DataInterFace”只会引发很多错误。

文档中没有关于此的正式内容,所以你们中有谁有想法吗?

export interface UserInterface {
  username: string,
  firstname: string,
  lastname: string,
  data: DataInterface
}

export interface DataInterface {
  test: string,
  test2: string
}

let test = { username: "test", firstname: "test", lastname: "test", data: {
  test: "hello",
  test2: "hello2"
}};

let DoesItWork:UserInterface = <UserInterface>test;
console.log(DoesItWork);

1 个答案:

答案 0 :(得分:3)

我会回答因为没有可读的方式在评论中显示代码。

你的接口没问题,但它们没有继承,因为它们都没有延伸到另一个。你所拥有的是UserInterface包含DataInterface的作文。

扩展看起来像这样:

interface DataInterface {
    test: string,
    test2: string
}

interface UserInterface extends DataInterface {
    username: string,
    firstname: string,
    lastname: string
}

UserInterface的一个实例将包含testtest2成员以及其中定义的其他成员。
但这可能不是你想要的,因为user.test而不是user.data.test

至于解析部分,那不是你正在做的事情。这样:

var user: UserInterface = {
    username: "username",
    firstname: "firstname",
    lastname: "lastname"
    data: {
        test: "test",
        test2: "test2"
    }
}

将实际对象分配给变量,这里不需要解析任何东西,你已经有了对象并且已经输入了。

如果从服务器获取对象,则它以字符串形式出现,在这种情况下,您需要:

var user: UserInterface = <UserInterface> JSON.parse(USER_STRING_CONTENT);