如何编写需要在打字稿中取一个参数?

时间:2018-04-14 03:29:57

标签: javascript typescript

我想导入一个在Typescript中接受参数的模块。 我用javascript编写了这个:

const cors = require('cors')({origin: true}); // JS

如何在Typescript中编写相同的表达式?

1 个答案:

答案 0 :(得分:2)

  

使用单个导入语句无法执行此操作。

那个不寻常的require语句在做什么?

如果您分解require语句,可以更好地理解这一点。

当你写const cors = require('cors')({origin: true});时,你实际做的是:

const corsPackage = require('cors');
const cors = corsPackage({origin: true});

请注意,您只是导入包,然后初始化它。

解决方案

在ES6 / TypeScript中重写此方法的正确方法如下:

首先导入所需的包:

import cors from 'cors';

现在,您可以初始化cors内联,或将其分配给变量:

// Assigning the initialized `cors` package to a variable
const allowCors = cors({origin: true});

// OR, initialize it as the point of usage. For example, with express:
router.use(cors(options));

为什么这么难找到答案?

您没有看到此方法使用ES6 cors语句在其文档中导入import包的原因是因为该包旨在与后端的Node一起使用;而不是在浏览器中。

在发布Node v10.0 LTS之前,您需要使用--experimental-modules标志来使用此功能。

  

您的问题是指使用ES6 import声明;这不是TypeScript specfic,而是由于TypeScripts转换为与浏览器兼容的代码而继承的功能。