Ho visto post su dove inserire la riga "usa rigoroso" in un file di codice TypeScript. La mia domanda è: perché averlo?
Poiché TypeScript è già un linguaggio fortemente tipizzato, cosa aggiunge "usa rigoroso"?
"use strict";
Ho visto post su dove inserire la riga "usa rigoroso" in un file di codice TypeScript. La mia domanda è: perché averlo?
Poiché TypeScript è già un linguaggio fortemente tipizzato, cosa aggiunge "usa rigoroso"?
"use strict";
Risposte:
aggiornamenti
"use strict";viene emesso in moduli (Altre informazioni ).--alwaysStrictopzione del compilatore analizza tutti i file in modalità rigorosa ed emette "use strict"nella parte superiore di tutti i file di output ( Leggi di più ).Puoi trovare un elenco di alcuni esempi cercando i test di TypeScript per "in modalità rigorosa".
Ecco alcuni esempi di codice che genererà un errore di compilazione solo quando "use strict";:
// future reserved keyword not allowed as variable name
var let,
yield,
public,
private,
protected,
static,
implements;
// "delete" cannot be called on an identifier
var a;
delete a;
// octal literals not allowed
03;
Ci sono alcuni altri esempi in cui "use strict";verrebbe generato un errore solo in fase di esecuzione. Per esempio:
"use strict";
delete Object.prototype;
Personalmente, non trovo tutto ciò molto utile per impedirmi di commettere errori in TypeScript e il rumore aggiuntivo che aggiunge a un file non mi disturba a scriverlo. Detto questo, a partire da TS 2.1 abiliterò l' --alwaysStrictopzione del compilatore perché aggiunge il leggero rigore aggiuntivo senza alcun sovraccarico di manutenzione del codice.
use strictstringa dichiarata nella parte superiore di un file TS può apparire all'interno della funzione del modulo anziché nella parte superiore del file, quindi alterare leggermente la semantica.
"use strict;"
Per i miei soldi, sì , "use strict";dovrebbe essere incluso nei file TypeScript.
Ignorando gli effetti di compilazione di "use strict";su Typescript, è probabile che si verifichi un impatto di runtime quando viene eseguito il javascript generato:
MDN identifica i miglioramenti delle prestazioni nell'evitare il boxing thisnelle chiamate di funzione e la rimozione delle proprietà function.callere function.arguments.
Jeff Walden di Mozilla ha anche accennato alle opportunità di miglioramenti delle prestazioni in questa risposta .