2015-10-19 76 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