2015-07-13 11 views
7

Si noti il ​​messaggio di errore nella parte inferiore: "config.ts (19,28): errore TS2339: la proprietà 'trova' non esiste sul tipo 'Rispondi []". Pensavo che tutti gli array avessero un metodo di "ricerca".Il "find" non esiste su qualsiasi tipo di dattiloscritto o array javascript?

Sono sicuro che mi manca qualcosa!

enter image description here

+0

Array.prototype.find() fa parte del ES6. Link => https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/find – kkaosninja

+0

Aha! E usare dattiloscritto non mi dà un ponte su quella particolare caratteristica di es6. Qual è la funzione es5 più utile? – pitosalas

+0

Il link di kkaosninja include un polyfill. – JJJ

risposta

2

Come detto prima, la funzione find è infatti parte di ES6 .

Abbiamo risolto il problema utilizzando filter e prendendo il primo elemento dell'array risultante.

0

Quindi ... Se si utilizza Typescript, si potrebbe utilizzare Array.prototype.find() perché Typescript è un superset di javascript. MA perché si 'compila' a ES5 si ottiene l'errore, perché il metodo trova fa parte di ES6 (ES2015), ma non ES5.

Mi ci è voluto un po 'per rendermi conto di questo fatto ovvio. Non è il tuo dattiloscritto, è per quello che target.

8

Dal tipografico 2.0 è anche possibile utilizzare il flag --lib compilatore o una sezione "lib": [] nel file tsconfig.js per includere ES6 caratteristiche, pur mira ES5. Vedere https://github.com/Microsoft/TypeScript/issues/6974

In questo caso è sufficiente includere le seguenti opzioni di configurazione nel tsconfig.js:

... 
"lib": [ "es6" ], 
"target": "es5" 
... 
Problemi correlati