使用带有javascript库的typescript

时间:2017-03-17 07:29:09

标签: typescript

我一直在看@types\ npm套餐很长一段时间。我正在使用它们,但我并不清楚它们究竟代表什么。

我知道这些库的主要目的是定义类型/类/接口......让它们准备好将它们用于打字稿项目。

目前,我打算在前端提供条带功能。有两个npm库:

  1. 官方stripe库,它是一个简单的JavaScript库。
  2. 还有另一个库@types/stripe,它只定义了条带类型。
  3. 我正在开发一个angular2 +打字稿项目,我遇到了不同的问题:

    1. 我已经安装了两个。我应该如何使用它们?
    2. 我意识到存在一个typings工具以便安装我不知道是什么。这是什么工具?
    3. 修改

      到目前为止,根据this guide

      npm install stripe --save
      npm install @types/stripe --save-dev
      

      我已将此添加到webpack.common.js

      new webpack.ProvidePlugin({
          Stripe: 'stripe'
      })
      

      然后,在我的打字稿组件中,我添加了这个:

      import * as Stripe from '@types/stripe';
      

      然而我收到了这个错误:

        

      [ts]文件'... / node_modules/@types/stripe/index.d.ts'不是模块。

      我也试过了:

      import stripePackage from 'stripe';
      

      但是我得到了同样的信息:

      [ts] File '.../node_modules/@types/stripe/index.d.ts' is not a module.
      

1 个答案:

答案 0 :(得分:1)

要点是,如果你导入用普通JS编写的库foo,TypeScript就无法推断任何类型。 foo展示的所有内容都将为any类型。

这就是你必须npm install @types/foo的原因。每当您从foo导入内容时,TypeScript都会将@types/foo的API与foo相关联。 @types是TypeScript在JS和TS之间进行互操作的方式。

从2.0开始,不推荐使用typings。您可以在此处详细了解:https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/