TypeScript dosyasında "Katı Kullan" gerekli mi?


126

Bir TypeScript kod dosyasında "katı kullan" satırının nereye koyulacağına ilişkin gönderiler gördüm. Sorum şu, neden hiç var?

TypeScript zaten güçlü bir şekilde yazılmış bir dil olduğundan, "katı kullan" ne ekler?



12
Sağladığınız bağlantı, bir JavaScript dosyasında "katı kullanım" ın ne için olduğunu tanımlar. Sorum, TypeScript ve Typescript etkinleştirilmiş düzenleyicilerin "katı kullan" ın yakalayacağı sorunların çoğunu / tümünü (?) Yakalayacağı bir TypeScript dosyasında hala yararlı / gerekli olup olmadığıdır.
DeborahK

ES6'da oluşturuyorsanız ve sonra Babel gibi bir şey kullanıyorsanız, oluşturulan betiğin içermesi gerekir"use strict";
BrunoLM

Bunu TS dosyalanmış olarak koymayın, tsconfig.json'a bayrağı ekleyin --alwaysStrict: Katı modda ayrıştırın ve her kaynak dosyası için "sıkı kullan"
yayın

Yanıtlar:


107

Güncellemeler

  • TypeScript 1.8+: "use strict";modüllerde yayınlanır ( Daha fazlasını okuyun ).
  • TypeScript 2.1+: --alwaysStrictderleyici seçeneği, tüm dosyaları katı modda ayrıştırır ve "use strict"tüm çıktısı alınan dosyaların en üstünde yayınlar ( Daha fazlasını okuyun ).

TypeScript testlerini "katı modda" için arayarak bazı örneklerin bir listesini bulabilirsiniz.

Aşağıda, yalnızca aşağıdaki durumlarda bir derleme zamanı hatası atacak bazı kod örnekleri verilmiştir "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;

"use strict";Yalnızca çalışma zamanında bir hata atan birkaç örnek daha var . Örneğin:

"use strict";
delete Object.prototype;

Kişisel olarak, TypeScript'te hata yapmamı engellemede o kadar da yararlı bulmuyorum ve bir dosyaya eklediği ek gürültü, onu yazmaktan rahatsız olmama neden oluyor. Bununla birlikte, TS 2.1'den başlayarak --alwaysStrictderleyici seçeneğini etkinleştireceğim çünkü herhangi bir kod bakımı ek yükü olmaksızın hafif bir ek katılık ekliyor.


TypeScript birim testlerinin bunu kapsaması harika. Kontrol edeceğim. Örnekler için teşekkürler. Ve artık TypeScript için "kodlama standartlarımıza" dahil edilmemesine katılıyorum.
DeborahK

Harici modüller kullanırsanız use strict, bir TS dosyasının en üstünde bildirilen herhangi bir dizenin , dosyanın en üstünde görünmek yerine modül işlevinde görünebileceğini ve dolayısıyla semantiği biraz değiştirebileceğini unutmayın.
billc.cn

benim makinemde, TypeScript 1.4, kullanılmadığında bile ECMAScript 5 veya üstünü hedeflerken sekizlik değişmez değerlere izin vermiyor"use strict;"
Jeremy

18

Param için, evet , "use strict";TypeScript dosyalarına dahil edilmelidir.

Typescript üzerindeki derleme zamanı etkileri göz ardı "use strict";edilirse, oluşturulan javascript çalıştırıldığında muhtemelen bir çalışma zamanı etkisi vardır:

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.