2015-07-13 16 views
79

"Kesintisiz" satırı bir TypeScript kod dosyasına koyacağınız yerlerle ilgili yayınlar gördüm. Benim sorum, neden bu kadar var?Bir TypeScript dosyasında "Strict Use" kullanmanız yeterli midir?

TypeScript zaten yazılmış bir dil olduğundan, "katı kullanım" ne ekler?

+2

http://stackoverflow.com/questions/1335851/what-does-use-strict-do-in-javascript-and-what-is-the-reasoning-behind-it?rq=1 –

+9

Sağladığınız bağlantı, JavaScript dosyasında "kullanımı sıkı" ifadesinin ne olduğunu tanımlar. Benim sorunum, TypeScript ve Typescript özellikli editörlerin "kullanımı zor" olan sorunların çoğunu/tümünü (?) Yakalayacağı bir TypeScript dosyasında hala yararlı/gerekli olup olmadığıdır. – DeborahK

+0

Aynı zamanda, ES6'ya sonra Babel gibi bir şey kullanarak oluşturuyorsanız, buna ihtiyaç duyduğunuzda, "" kullanımı sıkı "kelimesini içeren oluşturulmuş komut dizisini gerektirir;' – BrunoLM

cevap

61

Güncellemeler

  • typescript 1.8+: "use strict"; modüllerin (Read more) yayınlanır.
  • TypeScript 2.1+: --alwaysStrict derleyici seçeneği, tüm dosyaları sıkı modda ayrıştırır ve tüm çıktı dosyalarının (Read more) en üstünde "use strict" yayar.

Sen "Katı modda" için typescript en testler arayarak bazı örneklere bir listesini bulabilirsiniz.

// 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; 

"use strict"; sadece çalışma zamanında bir hata atmak olacaktır birkaç örnek daha vardır:

Burada "use strict"; yalnızca bir derleme zamanı hatası atar kod bazı örnekler var. Örneğin:

"use strict"; 
delete Object.prototype; 

Şahsen, daktilo hataları ve bir dosyaya ekler ilave gürültü yapmaktan beni önlemeyi tüm bu yararlı bulmuyorum bana yazma rahatsız yapar. TS 2.1'den başlayarak, --alwaysStrict derleyici seçeneğini etkinleştireceğim çünkü herhangi bir kod bakım yükü olmadan hafif ek bir katılık katıyor.

+0

TypeScript birim testlerinin bunu kapsadığı konusunda serin. Kontrol edeceğim. Örnekler için teşekkürler. Ayrıca, artık bunu TypeScript için "kodlama standartlarımıza" dahil etmeyi kabul etmiyorum. – DeborahK

+0

Harici modüller kullanıyorsanız, TS dosyasının üst kısmında bildirilen 'use strict' dizesinin, dosyanın üst kısmında değil de modül işlevinin dışında görünebileceğini, dolayısıyla semantikleri biraz değiştirebileceğini unutmayın. Makinemdeki –

+0

, '' katı kullanın '' kullanılmasa bile, TypeScript 1.4 ECMAScript 5 veya daha yüksek bir değeri hedeflerken sekizli değişmezlere izin vermez. – Jeremy

9

Param için yes, "use strict";, TypeScript dosyalarında bulunmalıdır. fonksiyon çağrılarında boks this kaçınarak içinde

  • MDN identifies performance improvements ve kaldırma:

    derleme süresi typescript üzerinde "use strict"; ait etkilerini dikkate almayan, oluşturulan JavaScript yürütüldüğünde bir çalışma zamanı darbe olasılığı yoktur function.caller ve function.arguments özelliklerinin özellikleri.

  • Mozilla'dan Jeff Walden, this answer numaralı telefondan performans kazanma fırsatlarına da işaret etti.