2016-10-14 36 views
0

我有一個使用typescript 2.0.4的angular2項目(2.0.0)。Angular2找到陣列上不存在

我有這樣的代碼:

var assignedIds: Array<string> = this.AssignedUsers.map(u => u.id); 
var users = this.AllUsers.filter(all => all.id != assignedIds.find(id => id == all.id)); 

我就找不到方法得到一個錯誤:

住宅 '發現' 的類型不存在 '字符串[]'。

我得到幾個陣列這個錯誤 - 不只是這一個。一對是數字[],一個是字符串[],另一個是自定義對象。

如果我對編譯器ES6它的工作原理,但我需要爲目標ES5。

我需要一些分型?

+0

您需要填充工具(見[這裏](http://stackoverflow.com/questions/31455805/find-object-in-array-using -typescript)),就像你在任何時候想要在僅支持es5的環境中使用es6功能一樣(需要Array.find) – drewmoore

+0

我需要製作一個polyfill嗎?我認爲Angular2爲此提供了一個不需要自定義代碼的解決方案。 –

回答

1

find()沒有在ES5存在,所以你的錯誤。您可以使用polyfill(如註釋中所述)解決該問題。

但是,你實際應該簡單代碼:

var assignedIds: Array<string> = this.AssignedUsers.map(u => u.id); 
var users = this.AllUsers.filter(all => assignedIds.some(id => id == all.id));