ES6 / Typescript导入:在一行上导入*和名称

时间:2017-08-24 17:19:00

标签: typescript import ecmascript-6

我怎么能在一行写这个?

import * as Express  from 'express';
import { Application, NextFunction, Request, Response } from 'express';

你的Dan the Dev

1 个答案:

答案 0 :(得分:6)

importexport的语法限制允许对其进行静态分析:

the documentation中所列:

  

从“module-name”导入defaultMember;

     

从“module-name”导入*作为名称;

     

从“module-name”导入{member};

     

从“module-name”导入{member as alias};

     

从“module-name”导入{member1,member2};

     

从“module-name”导入{member1,member2 as alias2,[...]};

     

从“module-name”导入defaultMember,{member [,[...]]};

     

导入defaultMember,*作为“module-name”的名称;

     

import“module-name”;

可以看出,没有import * as name, { member } from "module-name",所以不支持。

不支持它的原因是因为import * as name, { member } from "module-name"可以互换。它要么逐个导入成员,要么导入name命名空间。

如果由于某种原因应该使用两者,那应该是:

import * as Express from 'express';
import { Application, NextFunction, Request, Response } from 'express';

或者,如果导出是真实变量而不是类型/接口,则可以是:

import * as Express from 'express';
const { Application, NextFunction, Request, Response } = Express;