使用TypeScript传递环境值

时间:2019-03-18 20:09:46

标签: typescript

我在JS中看到这一行:

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

通常我会通过以下方式将其更改为TS:

 import { myKnex } from 'knex';

但是如何添加(配置)部分?

2 个答案:

答案 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还介绍了您可能会遇到的所有不同用例。我认为手边的使用对他们很有帮助。