Прежде всего, я знаю, что мой вопрос будет закрыт как дубликат, но пока не могу найти ответ.
Я создаю угловое приложение на основе Angular 8.
Какую цель и библиотеку я должен использовать и как они связаны? Должны ли lib и target для tsconfig быть одной версии? Каковы преимущества ?
Я не понимаю, например, в чем отличие от такого конфига:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2015",
"dom"
]
}
}
К этому:
{
"compileOnSave": false,
"compilerOptions": {
"outDir": "./dist/out-tsc",
"baseUrl": "src",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2016",
"dom"
]
}
}
Что оба работают нормально.
Могу ошибаться, но попробую ответить.
Цель указывает, что компилятор машинописного текста будет выводить для целевой версии ecmascript.
для angular 8 я думаю, что это установлено в esnext, потому что тогда webpack скомпилирует его еще раз, прежде чем вы получите свои пакеты.
А затем использование нового веб-пакета с дифференциальной загрузкой выдаст две версии: одну в es5 для старых браузеров и одну для браузеров > es2015.
Библиотеки — это все функции, которые typescript позволит вам использовать при написании кода. поэтому dom включает все типы dom, а es2018 включает все новые функции, появившиеся в этой версии.
Angular хорошо справляется с полифиллингом языковых функций, но иногда вам нужно будет добавить пакеты полифилла, чтобы новые API работали в старых браузерах.
Надеюсь немного прояснил :)