2014-03-26 20 views
2

我已經定義的類如下:如何打字稿對象科協工作

class Foo { 
    p1: string; 
    p2: string; 
    a_method(): string{ 
    return p1+p2; 
    } 
}; 

我有一種服務來回報其對應Foo JSON對象。

var foo: Foo= <Foo> restService.getOne(1); 

所以上面的代碼工作不錯,但我想知道如果下面的代碼將工作:

foo.a_method(); 

我的理解是,當JSON轉換爲JavaScript,它不應該有任何附加的方法。除非打字稿在投射時做某些事情,否則上面的代碼應該不起作用。

另外我想在JavaScript中一般來說,我應該如何實現這個cast

+0

這個解釋多一點在JavaScript方面:http://stackoverflow.com/questions/11810028/casting-plain-objects-to-function-instances-classes-in-javascript – Wudong

回答

7

當你懷疑它不會工作,你可能會感興趣。 TypeScript不會做type casting,它確實type assertion即你告訴編譯器這就是我說的這個對象,忘記了你在之前推斷出的。當使用類型斷言時,生成的javascript沒有變化。

至於推薦的方法:創建一個打字稿類,接受DTO作爲構造函數參數,並使用DTO來填充自己。

0

理想情況下,你的服務不會/不應該返回任何具有行爲的對象,通常服務json對象是指數據對象。

假設您應該有另一個對象來包含行爲和數據對象將只包含將從服務返回的數據成員。

要補充的還有一個返回類型JSONP它本身是從服務返回的功能,如果這是需要