2017-03-17 84 views
-1

我一直在看着@types\ npm包很長一段時間。我正在使用它們,但我不太清楚它們究竟代表什麼。在javascript庫中使用打字稿

我知道這些庫的主要目的是定義類型/類/接口......讓他們準備好將它們用於打字稿項目。

目前,我打算提供條紋功能到前端。有兩個npm庫:

  1. 官方stripe庫是一個簡單的JavaScript庫。
  2. 還有另一個庫@types/stripe它只定義條紋類型。

我開發一個angular2 +打字稿項目,我得到不同的問題:

  1. 我已經安裝了。我應該如何使用它們?
  2. 我已經意識到存在一個typings工具爲了安裝我不知道是什麼。這是什麼工具?

編輯

到現在爲止,並根據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] File '.../node_modules/@types/stripe/index.d.ts' is not a module.

我也試過:

import stripePackage from 'stripe'; 

但我得到了同樣的信息:

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

Diplicate:http://stackoverflow.com/questions/42834722/stripe-node-library-into-typescript-and-angular2(可能相同的人與不同的帳戶?...) –

回答

1

要點是,如果你導入庫文件foo,這是用純JS編寫的,Ty PeScript無法推斷任何類型。由foo公開的所有內容都將具有any類型。

這就是爲什麼你也必須npm install @types/foo。每當您從foo導入某些內容時,TypeScript將會將foo的API與@types/foo相關聯。 @types是TypeScript在JS和TS之間進行互操作的方式。

使用typings已棄用2.0。你可以閱讀更多關於這裏:https://blogs.msdn.microsoft.com/typescript/2016/06/15/the-future-of-declaration-files/

+0

所以1)我需要安裝兩者。 2)我不太明白'Typescript將foo的API與@ types/foo'聯繫起來 - >我應該如何「導入」這些庫?/TS如何進行這種關聯? – Jordi

+0

如果你起訴ES模塊,例如使用'foo''的import foo將「關聯」這些類型。如果你不熟悉這個話題,我會建議你事先知情同意一本書或通過https://basarat.gitbooks.io/typescript/content/ –

+0

我真的讀了很多至少工作。不過,我什麼也不懂!我使用的是webpack + typescript + angular2,我不太清楚如何直接導入一個js庫。我真的被卡住了! – Jordi