Untuk apa target di tsconfig.json?

93

Apa artinya targetdi tsconfig.jsonsignify?

{
  "compilerOptions": 
  {
    "sourceMap": true,
    "target": "es5",
    "module": "commonjs",
    "jsx": "react",
    "moduleResolution": "classic",
    "lib": [ "es2015", "dom",  "es2017" ]
  }
}
Ankit Raonka
sumber

Jawaban:

107

Saya cukup baru dalam Ketikan. Apa yang ditandakan Target di tsconfig.json?

targetmenandakan target JavaScript mana yang harus dikeluarkan dari TypeScript yang diberikan . Contoh:

target:es5

()=>nullakan menjadi function(){return null}karena ES5 tidak memiliki fungsi panah.

target:es6

()=>nullakan menjadi ()=>nullkarena ES6 memiliki fungsi panah.

basarat
sumber
5
apakah saya masih membutuhkan babel jika saya menargetkan es5 juga kode ketikan saya berisi async dan menunggu, apakah itu akan dikompilasi jika saya memberikan target sebagai es5?
Ankit Raonka
4
Tidak perlu babel untuk itu 🌹
basarat
Saya menggunakan es5tetapi menafsirkan destructuring [...arr].mapsebagai arr.slice().map, yang memecah untuk objek seperti array yang tidak memiliki slice. Ketika saya menargetkan es6, itu mulai bekerja di browser saya, tetapi apakah itu akan berhasil untuk semua orang?
Qwerty
@ Qwerty Tidak, itu tidak akan. Misalnya, ini tidak akan berfungsi di Internet Explorer 11, karena itu tidak mendukung es6 dan tidak memiliki fungsi .map. Meskipun Anda menargetkan es5, MASIH tidak akan berfungsi di Internet Explorer, karena bukan tugas transpiler untuk menambahkan polyfill. Anda masih perlu menambahkan polyfill jika Anda ingin mendukung browser non-es6.
pabrams
@ tabram jadi IE11 bahkan tidak mendukung semua ES5?
Qwerty
10

Target mengubah versi JavaScript yang Anda kompilasi.

Opsinya tersedia di https://www.typescriptlang.org/docs/handbook/compiler-options.html

Dalam semangat mencoba untuk lebih memahami bagaimana bendera target mengubah kode saya, saya mengumpulkan beberapa kode uji untuk masing-masing versi yang berbeda untuk memiliki pemahaman yang lebih baik tentang perbedaannya.

https://github.com/aizatto/typescript-playground/tree/master/dist/test-async-main

Saya juga mencatat apa yang harus saya targetkan tergantung pada lingkungan apa yang saya lihat

https://www.aizatto.com/notes/typescript

aizatto
sumber