Búsqueda de sitios web

Pasando valor de entorno con TypeScript


Veo esta línea en JS:

 const myKnex = require('knex')(config);

Normalmente lo cambiaría a TS con:

 import { myKnex } from 'knex';

¿pero cómo puedo agregar la parte (config)?

Respuesta #1

Ten cuidado, ya que las dos líneas que mencionaste no son equivalentes. En el primer caso ("JS") estás importando la exportación por defecto y luego ejecutándola como una función, y guardando el valor de retorno; en el segundo caso estás importando una exportación nombrada específica.

En cualquier caso, la primera línea funcionaría así, ya sea en Typescript o en JavaScript moderno:

import knex from 'knex';
const myKnex = knex(config);

Respuesta #2

Una cosa importante a tener en cuenta al trabajar con Node es que desarrolló su propio sistema de módulos antes de que aparecieran los módulos ES6.

La primera línea de código a la que haces referencia está usando ese sistema de módulos, pero también está haciendo más que solo cargar el módulo. Knex en realidad devuelve una función cuando cargas el módulo, y config se está pasando a esa función. Otra manera de escribir esto sería:

const knex = require('knex');
const myKnex = knex(config);

Entonces, si quisieras usar el sistema de módulos ES6 (que es preferido al escribir TypeScript) para cargar knex, podrías hacer algo como:

import * as knex from 'knex';
const myKnex = knex(config);

Al hacer un poco de investigación sobre Knex también, parece que necesitas usar la sintaxis import * as y no import knex from 'knex' si estás trabajando en TypeScript. Aquí hay un hilo que entra en eso con más detalle: https://github.com/tgriesser/knex/issues/2189

La documentación de TypeScript sobre módulos también cubre todos los diferentes casos de uso en los que podrías encontrarte. Creo que son bastante útiles para tener a mano.