tsconfigNode.js 12'de çalıştırılacak kod çıktısı için en uygun TypeScript ayarları nedir ?
tsconfigNode.js 12'de çalıştırılacak kod çıktısı için en uygun TypeScript ayarları nedir ?
Yanıtlar:
Node.js itibarıyla 12.0.0, ES2019% 100 desteklenmektedir. Bu sürümü veya daha yenisini hedeflediğinizi biliyorsanız, en uygun yapılandırma şöyle görünür:
"module": "commonjs"
Node.js ES-Modülleri ekleme yolunda, ancak şimdilik CommonJS ile uğraşmak zorundayız.
"target": "es2019"
Bu, TypeScript'e, ES2019'daki özelliklerle JavaScript sözdizimi çıktısının uygun olduğunu bildirir . Uygulamada bu, örneğin, bir çoklu dolguyu gömmek yerine nesne dinlenme / yayılma özellikleri ve zaman uyumsuz / beklemede sözdizimi çıktısı alacağı anlamına gelir.
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"]
Bu, TypeScript'e ES2019 veya önceki sürümlerde sunulan işlevleri ve özellikleri kullanmanın uygun olduğunu bildirir . Pratikte bu, örneğin String.prototype.trimStartve Array.prototype.flat.
ES2019 ek olarak, aynı zamanda node.js 12 destekler BigIntve matchAllES2020, biz ES2020 ek tanımları bulunmaktadır ürünüyle ilgilidir.
Böylece tam yapılandırma şöyle olacaktır:
{
"compilerOptions": {
"lib": ["es2019", "es2020.bigint", "es2020.string", "es2020.symbol.wellknown"],
"module": "commonjs",
"target": "es2019"
}
}
Node.js 12.9.0veya daha yenisini hedefliyorsanız "lib": ["es2020"], bu sürümün ES2020'de tanıtılan tüm yeni işlevleri ve özellikleri desteklediğini belirtebilirsiniz . Yine de yeni JavaScript sözdizimini desteklemediğinden, hala devam etmelisiniz "target": "es2019".
Böylece tam yapılandırma şöyle olacaktır:
{
"compilerOptions": {
"lib": ["es2020"],
"module": "commonjs",
"target": "es2019"
}
}
Node.js 14 çalıştırıyorsanız, Node.js 14 için benzer cevabımı burada görebilirsiniz
Node.js 10 çalıştırıyorsanız, Node.js 10 için benzer cevabımı burada görebilirsiniz
Node.js 8 çalıştırıyorsanız, Node.js 8 için benzer cevabımı burada görebilirsiniz
"target"etkileyecek"lib"eğer herhangi bir şekilde"lib"config boş bırakılır? Ben sadece varsayılan"target": "es2020"ne varsa"lib"? Bu benim için her zaman bir gizem kaynağı oldu.