Typescript import/as vs import/require?
我使用TypeScript和Express
/Node.js
。Typescript import/as vs import/require?
对于消费模块,打字稿手册显示的语法如下:
import express = require('express');
而且还有typescript.d.ts
文件显示:
import * as express from "express";
我还搜查了MSDN博客,但不能找到什么。
到2016年初,哪一个更正确?两者之间有什么区别,如果有的话?
哪里找最新的语法信息的最佳来源,以便我可以在未来找到这些信息?
这些大部分是等价的,但import *
有一些限制import ... = require
没有。
import * as
创建的标识符是一个模块对象,重视对象。根据ES6规范,这个对象永远不可调用或者可以使用 - 它只有属性。如果你想导入一个函数或类,你应该使用
import express = require('express');
或(取决于你的模块加载器)
import express from 'express';
尝试使用import * as express
,然后调用express()
始终是非法根据ES6规范。在某些运行时+转译环境中,这可能会发生作用,但它可能会在未来的任何时候突然中断,而不会发出警告,这会让您感到难过。
“一般来说,你应该使用ES6语法,除非你有什么理由不会(我想不出任何副手)“FWIW我[给出了答案为什么不](http://stackoverflow.com/a/29598404/252087)在这个[这个重复的问题](http: //stackoverflow.com/questions/29596714/new-es6-syntax-for-importing-commonjs-amd-modules-ie-import-foo-require)。 –
我在这里明显的矛盾之间有点困惑。我应该遵循哪些建议? @ 2016年你的建议仍然与2016年一样适用,就像你发布它的时候一样?谢谢。 –
@AdamThompson是的,请参阅“2016更新”部分。 –
import * as express from "express";
这是推荐的方式,因为它是去年以来的JavaScript标准(ES6/2015)。
无论如何,在你的tsconfig.json文件中,你应该将模块选项定位到commonjs,这是nodejs支持的格式。
我不知道什么是最好的,但这是非常好的https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript –