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.
