2016-07-29 80 views
1

我有一个节点项目,它的本质是节点将使用CommonJS模块系统。我感到困惑的是,它会出现,我可以使用下列任何语法做同样的事情:使用typescript的节点项目的首选模块语法

// Traditional Node Syntax 
const _ = require('lodash'); 
// Using the import keyword instead of a variable declaration 
import _ = require('lodash'); 
// ES2015 module syntax 
import * as _ from 'lodash'; 

我想的只是与传统的语法坚持,但不知道是不是我因为这样做而错过了任何事情。

但有一两件事,我做注意到的是,如果你使用的import关键字它似乎指示VS代码该变量的作用域应被认为是模块(又名,而不是部分的一部分全球范围),但似乎没有足够的智慧来用传统的语法来解释这一点。请注意以下区别:

using import keyword

traditional approach

import版本中,你会看到“有为帮助”被突出显示,因为它“无法找到模块”,这是可以预期的是没有界面或打字。

但是,在“传统方法”中,您会得到一些突出显示的变量,并且在每种情况下它都在“无法重新声明块范围变量”。嗯,这实际上是误导性的,因为实际上没有冲突,因为其他地方已经声明这些变量在其他模块/文件中。

+1

如果可以,我会使用ES2015语法。我开始在节点上使用typescript并遇到同样的问题,但出于某种原因,我无法使ES2015语法工作 – Filype

回答

0

我发现,该VS码的智能感知获取的非常不满与传统的语法,所以我在这一点上的做法是:

a)从转换时改变变量声明为“进口”指令JS项目。这对nodejs开发人员来说似乎比ES2015语法更为熟悉,但是因为这是未来...

b)在新建项目中或者当我开始投资更多转换后的JS→TS项目时,我发现自己正朝着ES2015的语法

我不认为有任何权利这样做,但以上是我目前的想法。