2016-01-26 114 views
-2

基本上我想擴展如下所示的用戶界面,這是做到這一點的方式?除了數據字段get的所有內容都被正確填充並且使用「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

目前尚不清楚你想在這裏做什麼。你並沒有試圖擴展任何東西,你的代碼看起來像'UserInterface'包含一個名爲'data'的'DataInterface'成員。然後你創建一個實例並將同一個實例分配給另一個變量。你想做什麼? –

+0

解析json到界面中?這真的很明顯? – Makkesk8

+0

真的不明顯,你問。 –

回答

1

我會回答cuz有沒有可讀的方式來顯示評論中的代碼。

你的接口沒問題,但它們沒有繼承,因爲它們都不能擴展其他接口。你所擁有的是作曲作品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); 
+0

謝謝,我可以使用您提供的信息並解決它。非常感謝你 – Makkesk8

相關問題