如何在打字稿中导入类型定义?

How to import the type-definition in typescript?

我尝试使用 hammerjs 的类型定义。作为:

import Hammer from 'hammerjs';

但是我得到这个错误:

Error TS2307: Cannot find module 'hammerjs'

我有两个问题。首先,是否需要获取 github 中的所有 tile 定义文件,我们可以获取 hammerjs 的 simples 定义吗?

我的 package.json 包含:

"dependencies": {
   "git+https://git@github.com/DefinitelyTyped/DefinitelyTyped.git"
}

第二个问题,我导入模块的错误是什么?

显然你误用了 package.json 依赖项。

请阅读 https://github.com/DefinitelyTyped/DefinitelyTyped#how-to-get-the-definitions how to use the definition provided there, or at https://www.npmjs.com/package/typings 如何使用更新的 'typings' 定义。

要回答您的第一个问题,您只需要项目依赖项的定义。

为了回答你的第二个问题,typescript 编译器尝试加载 hammerjs 依赖项但找不到它。您必须将其添加为 package.json 中的依赖项并使用 npm 安装它。

阅读后我解决了问题:http://x-team.com/2016/06/include-javascript-libraries-in-an-ionic-2-typescript-project/

我使用以下命令安装了 hammerjs:

typings install github:DefinitelyTyped/DefinitelyTyped/hammerjs/hammerjs.d.ts#de8e80dfe5360fef44d00c41257d5ef37add000a --global --save

然后还是出现错误:

Error TS2307: Cannot find module 'hammerjs'

我正在用 ionic2 开发应用程序,我发现 typescript 的编译器查找文件 main.d.ts 而不是 index.d.ts 。将文件 index.d.ts 重命名为 main.d.ts 后工作正常!在 root-your-app/typings

中找到文件 main.d.ts

在我使用的项目中导入:import * as Hammer from 'hammerjs';

Hammerjs 可能与我正在处理的 chrome 扩展类型不同,但问题听起来很像我在需要提供的模块文件中缺少导入或导出时遇到的问题参考资料:

第一步:npm install --save @types/chrome

第 2 步:将 /// 添加到需要使用模块的代码中

第 3 步:该文件可以访问所有声明的模块。[不要导入 chrome 或 '@types/chrome'] https://typescript.codeplex.com/wikipage?title=Modules%20in%20TypeScript