Acabo de actualizar mi aplicación a Angular 12 y estoy tratando de usar es2020. Por alguna razón, sigo recibiendo errores cuando se compila mi aplicación porque parece que la aplicación todavía está tratando de usar es2015:
node_modules/typescript/lib/lib.es2015.promise.d.ts:33:34 [ng] 33 new <T>(executor: (resolve: (value: T | PromiseLike<T>) => void, reject: (reason?: any) => void) => void): Promise<T>; [ng] ~~~~~~~~~~~~~~~~~~~~~~~~~ [ng] An argument for 'value' was not provided. tsconfig.json para reflejar es2020:
{ "compileOnSave": false, "compilerOptions": { "baseUrl": "./", "outDir": "./dist/out-tsc", "sourceMap": true, "inlineSources": true, "declaration": false, "sourceRoot": "/", "module": "es2020", "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "importHelpers": true, "target": "es2020", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2020", "dom" ] }, "exclude": [ "node_modules", "**.*.spec.ts", "plugins/**" ] }EDITAR:
Cuando sirvo mi aplicación, también veo lo siguiente:
[ng] Compiling @angular/core : es2015 as esm2015 [ng] Compiling @ionic-native/core : module as esm5 [ng] Compiling @angular/common : es2015 as esm2015 [ng] Compiling @angular/cdk/collections : es2015 as esm2015 [ng] Compiling @ionic-native/splash-screen : module as esm5 [ng] Compiling @ionic-native/barcode-scanner : module as esm5 [ng] Compiling @ionic-native/status-bar : module as esm5 [ng] Compiling @angular/platform-browser : es2015 as esm2015 [ng] Compiling @angular/cdk/platform : es2015 as esm2015 Por último, ya estoy usando Typescript 4.3.5 en mi package.json .
Pero no he instalado explícitamente ninguna escritura nueva desde que hice el cambio. ¿Qué hago a continuación para permitir el cambio a es2020?
Recuerde que cuando apunta a ES2020, excluye a todos los usuarios con iOS 13.3 e inferior (lo más probable es que esté usando ?? o ?. ). Si bien esa versión tiene más de 2 años, es importante verificar los registros de su servidor para ver cuántos usuarios / clientes todavía usan (y tal vez generen ingresos) con navegadores antiguos.
Desafortunadamente, dado que Safari está vinculado a la versión de iOS, si alguien no actualiza iOS, también se atrasa con las versiones de Safari y ES.
El punto es asegurarse de que realmente quiere hacer esto antes de hacerlo.
Personalmente, creé los archivos ts.config.ES2020.app y ts.config.ES2015.app para ambos y utilizo perfiles de configuración en angular.json para elegir 2020 durante el desarrollo.
Eso significa que veré cosas modernas como ?? en mi navegador de desarrollo, pero esperamos que los $85 que recibimos de los usuarios de Safari 13.3 durante la primera mitad de este año se dupliquen.