0

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

我正在编写一个 nodejs 程序。

我通过打字(不是环境模块)安装了momentJS,并且我设法像这样导入它

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

import * as testTwo from 'moment';

import * as testThree from 'moment/moment';

似乎所有三种方式都有效。第一个选项是我习惯的原始节点需要方式......其他两个似乎是打字稿导入。

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

我忽略了打字/浏览器...

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

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

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

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

关于打字?

我用来安装 momentjs 的 typings 命令是

    typings install moment
4

1 回答 1

1

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

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

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

moment/moment模块是在从注册表下载定义时通过类型(仅在内部)创建的。moment.d.ts这是他们发现的一种防止冲突的方法。查看注册表中的原始moment.d.ts文件,它与本地系统中的文件不同。

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

于 2016-04-08T21:46:34.310 回答