如何在1行上编写此代码?ES6/Typescript导入:导入*和单行上的名称
import * as Express from 'express';
import { Application, NextFunction, Request, Response } from 'express';
你丹的开发
如何在1行上编写此代码?ES6/Typescript导入:导入*和单行上的名称
import * as Express from 'express';
import { Application, NextFunction, Request, Response } from 'express';
你丹的开发
import
和export
有限制语法,允许静态分析他们:
正如the documentation上市:
进口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 [,[...]]};
import 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;
嗨,谢谢你的详细解答,我一定会仔细看看提到的文档。 不幸的是,最后一个构造与const(我已经尝试过),但会更合乎逻辑 –
我补充说明。我认为这是因为它们是界面而不是真正的类,不是吗?所以不,const解构是没有意义的,因为没有什么可以解构的。在这种情况下,第一个选项是正确的,顺便说一句,不要单独导入接口是非常传统的,因为'foo:Express.NextFunction'读取更干净,这样接口就不会与类混淆,即使它们不'没有'I'后缀。 – estus
是的,他们都是接口:) –
'*'进口一切从'快递'。我不明白需要分别导入其他模块 – koolkat