网站搜索

typescript - 在 Angular CLI 中使用第三方库的类型定义


我正在尝试弄清楚如何在 Angular CLI 环境中使用各种第三方库。官方维基页面对开始使用 moment.js 库非常有帮助。然而,当我尝试为该库安装 typings(教程中的步骤 1a)时遇到了麻烦:

typings install moment --save

typings WARN hastypings Typings for "moment" already exist in 
"node_modules/moment/moment.d.ts". You should let TypeScript resolve
the packaged typings and uninstall the copy installed by Typings

typings ERR! message Unable to find "moment" ("npm") in the registry.
Did you want to try searching another source? Also, if you want contribute
these typings, please help us: https://github.com/typings/registry

我的设置供参考:

angular-cli: 1.0.0-beta.5
node: 4.4.4
os: darwin x64
typings: 1.0.5

虽然错误消息建议“卸载由 Typings 安装的副本”,但似乎没有新的 .d.ts 文件被添加到项目文件夹中。在这种情况下,包含第三方类型定义的最佳方法是什么?

答案#1

简短回答:运行 npm install @types/moment。

解释:

你这里至少有几个问题。

(1) 正如 TypeScript 团队宣布的那样,“在 TypeScript 2.0 中获取类型声明将 不需要除 npm 之外的任何工具”(强调原文)。这意味着 typings 已被弃用,安装类型文件只需要使用 npm 即可。一个简单的例子是 npm install --save @types/lodash。请注意 @types。所有的类型文件现在都放在 node_modules/@types 中。考虑到这一点,我们可以来看你的第二个问题。

(2) 你正在使用 typings,这是一个 TypeScript 1 工具,而 angular-cli 使用的是 TypeScript 2。它们不兼容。相反,你可以使用 npm install @types/moment 安装 momentjs 的类型定义。

最后——这与您的问题没有直接关系——您可能会对 angular2-moment 感兴趣,它是一个将 momentjs 移植到 Angular 2 的开源库。