Typescript导入/作为vs导入/要求?
我正在使用TypeScript与Express
/ Node.js
对于使用模块,TypeScript手册显示以下语法:
import express = require('express');
而且typescript.d.ts
文件显示:
import * as express from "express";
我也search了MSDN博客,但找不到任何东西。
哪一个在2016年初更正确? 两者之间有什么区别,如果有的话?
哪里是最好的来源,find最新的语法信息使用,所以我可以在未来find这个信息?
这些大部分是等价的,但是import *
有一些限制, import ... = require
不。
import * as
创build一个标识符,它是一个模块对象 ,强调对象 。 根据ES6规范,这个对象永远不可调用或者是new
– 它只有属性。 如果你正试图导入一个函数或类,你应该使用
import express = require('express');
或(取决于你的模块加载器)
import express from 'express';
尝试使用import * as express
,然后调用express()
总是违法的,根据ES6规范。 在某些运行时+转译环境中,这可能会发生作用,但是在未来的任何时候都可能会突然中断,这会让你感到难过。
import * as express from "express";
这是build议的做法,因为它是去年以来的JavaScript标准(ES6 / 2015)。
在任何情况下,在你的tsconfig.json文件中,你都应该将模块选项定位到nodejs支持的格式commonjs。