tutorial español es6 ecmascript diferencias typescript ecmascript-6 commonjs

español - typescript vs javascript diferencias



La importación de TypeScript desde bibliotecas escritas en ES5 vs. ES6 (1)

Obtengo errores extraños al ejecutar código TypeScript transpilado que depende de bibliotecas externas

Tales como Uncaught TypeError: es5_lib_1.default is not a function

¿Qué pasa?


Las especificaciones del módulo ES6 difieren ligeramente de CommonJs, que se describen aquí . Esto introduce algunos problemas de compatibilidad algo exasperados en TypeScript.

TypeScript intenta adivinar la forma correcta de transpilar sentencias import/require basadas en dos entradas

  • La propiedad del module en tsconfig.json
  • Cómo se escribe la declaración de export en el archivo .d.ts correspondiente

En el archivo tsconfig.json , podemos establecer el formato del módulo que utilizará la salida transpilada. Por ejemplo, module: ''es6''

Lo que elijamos aquí tiene un impacto en el tipo de sintaxis de importación que permitirá TypeScript. Lo cual también se vio afectado por la forma en que se escriben los archivos de forma de .d.ts correspondientes.

Si estamos importando desde una biblioteca de CommonJS y nuestro módulo de salida se dirige a CommonJS, debemos usar

//tsconfig.json module: "commonjs" //.d.ts declare module ''foo'' { exports = Foo; } // App.ts import Foo = require(''foo'');

Si estamos importando desde una biblioteca de CommonJS y nuestro módulo de salida se dirige a ES6, debemos usar:

//tsconfig.json module: "es6" //.d.ts declare module ''foo'' { exports default Foo; } // App.ts import {default as Foo} from ''foo'';

Si estamos importando Desde una biblioteca ES6 , podemos usar el estilo de import {default ... } independientemente del formato del módulo de salida específico

//tsconfig.json module: "es6|commonjs" //.d.ts declare module ''foo.es6'' { exports default FooES6; } // App.ts import {default as FooES6} from ''foo.es6'';

¿Qué significa esto para los archivos .d.ts que recuperamos de tsd install ?

Según el producto al que nos .d.ts , es posible que tengamos que modificar los archivos .d.ts vez que se hayan instalado para satisfacer nuestras necesidades. La .d.ts archivos .d.ts están escritos para los módulos de commonjs y, por lo tanto, usarán el estilo export = <lib> . Pero si desea apuntar a la salida de ES6, tendrá que editar esto y cambiarlo para export default

Proporcione correcciones a esta respuesta según sea necesario