2015-10-19 78 views
8

我試圖寫一個SES打字稿客戶端,使用從https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk.d.ts如何爲TypeScript使用AWS sdk定義?

這裏下載AWS定義文件是什麼,我已經試過:

/// <reference path="../typings/aws-sdk.d.ts" /> 
var AWS = require('aws-sdk'); 
var ses:SES = new AWS.SES(); 

以下是錯誤,我得到:

/usr/local/bin/tsc --sourcemap SesTest.ts 
SesTest.ts(3,9): error TS2304: Cannot find name 'SES'. 

Process finished with exit code 2 

我找不到有關如何使這項工作的任何文檔。請幫忙!

回答

7

更改爲:

import AWS = require('aws-sdk'); 
var ses:AWS.SES = new AWS.SES(); 

注:如果import不清楚,你可能要在模塊上讀取了起來:https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

提示:總是一個好主意,看看測試文件的預期使用:https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk-tests.ts

+1

謝謝,這真的很有幫助,它確實解決了我的直接問題,但現在我被卡住,試圖使用實際的類型定義。例如,我如何創建一個新的目標對象?我試過'var dest = new AWS.Ses.Destination();'但我得到這個錯誤:TypeError:無法讀取未定義的屬性'Destination' –

+0

'var dest = new AWS.Ses.Destination();'定義可能是錯誤的(他們是最好的努力...正如任何文檔一樣)。使用類型斷言來強制它:https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html – basarat

+0

我正在做你剛纔所說的,我不明白這個問題足以知道如何使用類型斷言來解決它。我將回到JavaScript。謝謝你的幫助。 –

5

我覺得更合適的方式來做到這一點是

import { <ServiceName> } from 'aws-sdk';

例如

import { DynamoDb } from 'aws-sdk';

其次

this.client = new DynamoDB();在課堂上。

我說這更合適,因爲它使用TypeScript的導入語法。

+0

這應該是最好的答案和首選方法。 – demisx