在Typescript中,当从Typeings导入时,我如何使用一个Javascript模块?

8
使用 mgechev's angular2-seed,我正在尝试使用 Angular2 和 Typescript 开发一个新项目,但是遇到了这个问题。
我想在组件中使用 Numeral,因此我:
  1. 使用 npm install numeral 安装了 Numeral。
  2. 使用 typings install dt~numeraljs --global --save 安装了 Numeral 的类型定义。
  3. 在我的组件中添加了 import { numeral } from '/typings/globals/numeraljs';
  4. 添加了以下代码行:let num:Number = new Number(numeral().unformat(text));
到目前为止,一切都很好。似乎一切都可以编译过去。直到我在浏览器中运行时,在控制台中出现了以下错误信息:
Error: XHR error (404 Not Found) loading http://localhost:5555/typings/globals/numeraljs.js(…)

我在这里做错了什么?我是否漏掉了一步,告诉Typescript实际代码在哪里?
3个回答

11

通常你需要做的是,如果这个包不是原生的Typescript模块:

import * as numeral from 'numeral';

typings文件夹仅用于告诉Typescript类型定义是什么,以便在代码高亮和linting中使用。您想要导入的实际模块位于node_modules文件夹中,并且可以通过其名称导入。

如果它仍然抱怨找不到numeral模块,您可以添加

/// <reference path="typings/globals/numeraljs/numeraljs.d.ts"/>

或者Typescript定义文件存储在哪里。


1
太好了!谢谢。我不需要添加参考注释。 - jeffeld

1

您还需要在index.html页面中添加对numeraljs.js文件的引用链接。

假设您的主页面是index.html页面,请将numeraljs.js添加到head中。

<head>
   <script src="myScriptLib/numeral/numeraljs.js"></script>
</head>

您还可以使用system.js来加载所有必需的脚本。


1
我不需要这样做。Typescript的模块解析应该会处理这个问题。 - jeffeld

1
正确的方式
import {default as numeral} from 'numeral';
numeral(1000000).format('$0,0.00') // $1,000,000

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接