‘Strict gebruiken’ nodig in een TypeScript-bestand?

Ik heb berichten gezien over waar de regel “gebruik strikt” in een TypeScript-codebestand moet worden geplaatst. Mijn vraag is, waarom heb je het überhaupt?

Aangezien TypeScript al een sterk getypeerde taal is, wat voegt “gebruik strikt” toe?


Antwoord 1, autoriteit 100%

Updates

  • TypeScript 1.8+: "use strict";wordt uitgezonden in modules (Lees meer).
  • TypeScript 2.1+: --alwaysStrictcompileroptie parseert alle bestanden in strikte modus en zendt "use strict"uit bovenaan alle uitgevoerde bestanden (Meer lezen).

Je kunt een lijst met enkele voorbeelden vinden door in de tests van TypeScript te zoeken naar “in strikte modus”.

Hier zijn enkele voorbeelden van code die alleen een compileerfout veroorzaakt wanneer u "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;

Er zijn nog een paar voorbeelden waarbij "use strict";alleen tijdens runtime een foutmelding geeft. Bijvoorbeeld:

"use strict";
delete Object.prototype;

Persoonlijk vind ik het niet zo handig om te voorkomen dat ik fouten maak in TypeScript en de extra ruis die het aan een bestand toevoegt, zorgt ervoor dat ik niet de moeite neem om het te schrijven. Dat gezegd hebbende, zal ik vanaf TS 2.1 de compileroptie --alwaysStrictinschakelen omdat het de lichte extra striktheid toevoegt zonder enige overhead voor code-onderhoud.


Antwoord 2, autoriteit 16%

Voor mijn geld, ja, "use strict";moet worden opgenomen in TypeScript-bestanden.

Afgezien van de compileertijdeffecten van "use strict";op TypeScript, is er waarschijnlijk een runtimeimpact wanneer het gegenereerde JavaScript wordt uitgevoerd :

  • MDN identificeert prestatieverbeteringenbij het vermijden van het boksen thisbij functieaanroepen, en het verwijderen van de eigenschappen function.calleren function.arguments.

  • Jeff Walden van Mozilla heeft in dit antwoordook gewezen op mogelijkheden voor prestatieverbetering.

Other episodes