2
我正在用TypeScript構建一些最佳實踐。如果我提出一個Web請求,並且我得到一個帶有屬性Name
和Age
的JSON對象,是否有一種簡單的方法可以將它轉換爲我的類,該類具有屬性Name
和Age
以及函數說PrintPerson
?將香草物體轉換爲類?
我知道我可以寫出一個構造函數,它將對象和字段按字段複製到this
中,以便類具有相同的數據。這裏有一個簡單的例子:
interface RawPerson {
Name: string;
Age: number;
}
class Person implements RawPerson {
Name: string;
Age: number;
constructor(obj: RawPerson) {
this.Name = obj.Name;
this.Age = obj.Age;
}
PrintPerson() {
console.log(this.Name + ' is ' + this.Age);
}
}
var json = { Name: 'Corey', Age: 26 };
// What works
new Person(json).PrintPerson();
// Something simple I'd like to do (but doesn't work)
// If this worked, I wouldn't need the Person constructor
(<Person>json).PrintPerson();
有一個構造函數拷貝過來每場可以得到乏味。我想做一些簡單的事情,就像投它一樣,只是希望這些功能現在已經神奇了。他們不是。有沒有其他辦法可以讓我免於寫這個笨拙的構造函數?
難道你不應該能夠施放它嗎? IE:'ajaxCall.then((data:Person)=> {//數據現在是Person類型' – tymeJV
@tymeJV我正在使用Angular 2,所以'http.get'中的內容是一個'Response'對象。如果我有'res:Response',那麼我可以調用'res.json()'來獲得它作爲一個vanilla對象。如果我把它轉換成'Person',那麼(就像我上面的例子),我得到一個錯誤, 'PrintPerson'不存在 –
它看起來像試圖' res.json()'仍然只看到對象作爲一個對象而不是一個人。沒有轉換髮生,因此爲什麼'PrintPerson' isn'對它,它仍然是一個對象。 –