Typescript:需要一个(新的)TYPINGS 文件以正确的方式(在节点中)?

Typescript: Require a (new) TYPINGS file the correct way (in node)?

我对导入 Typings 文件感到非常困惑,似乎有很多方法可以做到这一点。

我正在写一个nodejs程序。

我通过打字(不是环境模块)安装了 momentJS,并且我已经成功地像这样导入了它

var testOne = require('moment/moment');

import * as testTwo from 'moment';

import * as testThree from 'moment/moment';

看来三种方式都行得通。第一个选项是我习惯的原始节点要求方式...其他两个似乎是打字稿导入。

我使用了单一目录结构和 moment/moment,它们似乎同样有效。

我忽略了typings/browser...

所以我目前的目录结构实际上存储在这里

     /typings/main/definitions/moment/index.d.ts

那么我应该使用 moment 还是 moment/moment?

我确实尝试检查文档,但我不知道我是否没有正确理解它,但我什么时候使用哪个导入?

关于打字?

我用来安装 momentjs 的 typings 命令是

    typings install moment

import * as testTwo from 'moment';var testOne = require('moment'); 都是有效的并且是导入模块的正确方法。

不同之处在于,第一个将在设计时加载它的类型定义,智能感知将起作用并且编译器将即时验证它(如果您使用支持此内容的 IDE)。在 TypeScript 项目中,第一个优于第二个。但这里重要的是,编译和 运行 都按预期进行。

import * as testTwo from 'moment/moment';var testOne = require('moment/moment'); 也有效,但不应使用。

moment/moment 模块是由注册表中的 typings (only inside moment.d.ts) when downloading the definition from the registry. It's a way they found to prevent conflicts. Take a look at the original moment.d.ts 文件创建的,它与您在本地系统中的文件不同。

不仅如此,您还选择了一个糟糕的库来进行比较。 require('moment/moment') 也有效,因为根 moment 项目路径中有一个 moment.js 文件。但这并不常见,并非所有包都这样做,应该避免。包旨在通过简单地引用它的名称来使用。