我在JS中看到这一行:
const myKnex = require('knex')(config);
通常我会通过以下方式将其更改为TS:
import { myKnex } from 'knex';
但是如何添加(配置)部分?
答案 0 :(得分:5)
请小心,因为您提到的两行不相等。在第一种情况下(“ JS”),您要导入 default 导出,然后将其作为函数运行,并保存返回值;在第二种情况下,您将导入名为 的特定导出。
在任何情况下,无论是在Typescript还是现代JavaScript中,第一行都将像这样工作:
import knex from 'knex';
const myKnex = knex(config);
答案 1 :(得分:4)
使用Node时要注意的一件事是,它在ES6模块出现之前就开发了自己的module system。
您引用的第一行代码正在使用该模块系统,但它所做的不仅仅是加载模块。实际上,当您加载模块时,Knex实际上会返回一个函数,并且 config 会传递给该函数。另一种写法是:
const knex = require('knex');
const myKnex = knex(config);
因此,如果要使用ES6模块系统(编写TypeScript时首选)来加载knex,则可以执行以下操作:
import * as knex from 'knex';
const myKnex = knex(config);
也做了一些对Knex的挖掘,看起来确实需要使用 import * as 语法,而不是从'knex'导入knex 如果您正在使用TypeScript。这是一个涉及更多内容的线程:https://github.com/tgriesser/knex/issues/2189
TypeScript docs on modules还介绍了您可能会遇到的所有不同用例。我认为手边的使用对他们很有帮助。