【问题标题】:Preferred module syntax for node projects using typescript使用打字稿的节点项目的首选模块语法
【发布时间】:2016-08-05 16:27:00
【问题描述】:

我有一个节点项目,它本质上是 node 将使用 CommonJS 模块系统。我感到困惑的是,我似乎可以使用以下任何语法来做同样的事情:

// 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-code 表明变量作用域应该被视为模块的一部分(又名,不是全局范围的一部分),而它似乎不够聪明,无法用传统语法解决这个问题。请注意以下区别:

import 版本中,您会看到“promising-help”被突出显示,因为它“找不到模块”,这是预期的,因为没有接口或输入。

然而,在“传统方法”中,您会看到许多突出显示的变量,并且在每种情况下,它都会对“无法重新声明块范围变量”犹豫不决。嗯,这实际上是一种误导,因为实际上没有冲突,因为声明这些变量的其他地方在其他模块/文件中。

【问题讨论】:

  • 如果可以的话,我会使用 ES2015 语法。我开始在 node 中使用 typescript 并遇到了同样的问题,但由于某种原因,我根本无法使用 ES2015 语法

标签: node.js typescript


【解决方案1】:

我发现,VS-Code 的智能感知对传统语法非常不满意,所以我现在的方法是:

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

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

我认为没有任何正确的方法可以做到这一点,但以上是我目前的想法。

【讨论】:

    猜你喜欢
    • 2012-09-27
    • 2016-04-12
    • 2022-01-14
    • 1970-01-01
    • 2021-12-25
    • 2018-06-10
    • 1970-01-01
    • 1970-01-01
    • 2018-07-30
    相关资源
    最近更新 更多