基本上我想扩展用户界面,如下图所示,这是这样做的吗?除了数据字段之外的所有内容都已正确填充并使用“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);
答案 0 :(得分:3)
我会回答因为没有可读的方式在评论中显示代码。
你的接口没问题,但它们没有继承,因为它们都没有延伸到另一个。你所拥有的是UserInterface
包含DataInterface
的作文。
扩展看起来像这样:
interface DataInterface {
test: string,
test2: string
}
interface UserInterface extends DataInterface {
username: string,
firstname: string,
lastname: string
}
UserInterface的一个实例将包含test
和test2
成员以及其中定义的其他成员。
但这可能不是你想要的,因为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);