javascript - TypeScript import/as vs import/require?

标签 javascript node.js express typescript

我正在使用带有 Express/Node.js 的 TypeScript。

对于使用模块,TypeScript 手册显示以下语法:

import express = require('express');

而且 typescript.d.ts 文件也显示:

import * as express from "express";

我也搜索了 MSDN 博客,但没有找到任何东西。

截至 2016 年初,哪一个更正确?如果有的话,两者有什么区别?

在哪里可以找到有关要使用的最新语法的信息的最佳来源,以便我以后可以找到这些信息?

最佳答案

这些大多是等效的,但是 import * 有一些限制 import ... = require 没有。

import * as 创建一个标识符,它是一个模块对象,强调object。根据 ES6 规范,这个对象永远不可调用或 newable - 它只有属性。如果你想导入一个函数或类,你应该使用

import express = require('express');

或(取决于您的模块加载器)

import express from 'express';

根据 ES6 规范,尝试使用 import * as express 然后调用 express() 始终是非法的。在某些运行时+转译环境中,这可能会发生,但它可能会在未来的任何时候中断而不会发出警告,这会让您感到难过。

关于javascript - TypeScript import/as vs import/require?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35706164/

相关文章:

JavaScript forEach : mutate elements

javascript - 如何从字符串中删除所有元音并使用 for 循环返回结果?

javascript - Joi 验证器条件模式

javascript - 如何将通过CKEditor5插入的所有URL预先转换为正确的URL?

javascript - 通过检查 jQuery 对象获取 jQuery 版本

node.js - 从 Lambda 连接到 DocumentDB 时超时

javascript - Youtube-Search NPM 包给出了奇怪的结果

javascript - Express:为什么这个GET请求执行了两次?

javascript - For 循环在 Jade 中的 Node.js 中声明的变量在 Javascript 中不起作用

node.js - 错误 : Package exports for <path to project folder>/node_modules/@babel/helper-compilation-targets' do not define a '.' subpath