2014-10-19 49 views
0

我有這樣的代碼:我可以使用打字稿投射功能的輸出嗎?

.success((data: any[], status, headers, config) => { 
    self.userTests.data = data; 
    self.userTests.dataMap = _.reduce(data, function (rv, v) { 
     rv[v.userTestId] = v; 
     return rv; 
    }, {}); 
}) 

的數據圖的接口是IUserTestDataMap和_.reduce的輸出是給我正確的數據。然而打字稿抱怨有一個錯誤:

Error 9 Cannot convert '{}' to 'IUserTestDataMap': 
    Index signatures of types '{}' and 'IUserTestDataMap' are incompatible. 

有沒有一種方法我可以打字稿投的數據,使其接受來自_.reduce函數的輸出?

回答

3

鑄件可以做這樣的:

<IUserTestDataMap>{} 

這個轉換操作符什麼都不做比告訴編譯器「相信我,這個對象應該,如果它是指定類型的下面進行治療」等。

interface Foo { 
    id: number; 
} 

var x : Foo; 
x = {}; // error 
x = <Foo>{}; // okay 

var y = {}; 
x = <Foo>y; // okay