2015-07-13 13 views
7

Zwróć uwagę na komunikat o błędzie na dole: "config.ts (19,28): error TS2339: Właściwość" find "nie istnieje w typie" Answer [] ". Myślałem, że wszystkie tablice będą miały metodę "znajdowania".Czy "znajdź" nie istnieje na jakiejkolwiek maszynie lub tablicy javascript?

Jestem pewien, że czegoś mi brakuje!

enter image description here

+0

Array.prototype.find() jest częścią ES6. Link => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find – kkaosninja

+0

Aha! Używanie maszynopisu nie daje mi pomostu do tej konkretnej funkcji es6. Jaka jest najbliższa użyteczna funkcja es5? – pitosalas

+0

Łącze kkaosninja zawiera polyfill. – JJJ

Odpowiedz

2

Jak wspomniano wcześniej, funkcja find jest rzeczywiście częścią ES6 .

Naprawiliśmy to, używając zamiast tego filter i biorąc pierwszy element wynikowej tablicy.

0

Więc ... Jeśli używasz Typescript, to możesz używać Array.prototype.find(), ponieważ Typescript jest nadzbiorem javascript. ALE ponieważ "kompilujesz" do ES5, otrzymujesz błąd, ponieważ metoda znajduje jest częścią ES6 (ES2015), ale nie ES5.

Zajęło mi trochę czasu, aby uświadomić sobie ten oczywisty fakt. To nie twój maszynopis, tylko to, do czego celujesz.

8

Od maszynopis 2.0 można również użyć flagi --lib kompilatora lub odcinek "lib": [] w pliku tsconfig.js zawierać ES6 funkcji, przy jednoczesnym kierowaniu ES5. Zobacz https://github.com/Microsoft/TypeScript/issues/6974

W tym przypadku po prostu zawierać następujące opcje konfiguracyjne w swojej tsconfig.js:

... 
"lib": [ "es6" ], 
"target": "es5" 
... 
Powiązane problemy