2015-10-19 10 views
8

sto cercando di scrivere un client di SES tipografico, utilizzando AWS file delle definizioni scaricato da https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk.d.tsCome utilizzare le definizioni sdk di AWS per TypeScript?

Ecco che cosa ho provato:

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

Ecco l'errore che ottengo:

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

Process finished with exit code 2 

Non riesco a trovare alcuna documentazione su come farlo funzionare. Per favore aiuto!

risposta

7

Passa a:

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

Nota: se import non è chiaro, probabilmente si desidera leggere su moduli: https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

TIP: sempre una buona idea per vedere il file di prova per l'uso previsto: https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk-tests.ts

+1

Grazie, è davvero utile e ha risolto il mio problema immediato, ma ora sono bloccato cercando di utilizzare le definizioni del tipo effettivo. Ad esempio, come posso creare un nuovo oggetto di destinazione? Ho provato 'var dest = new AWS.Ses.Destination();' ma ottengo questo errore: TypeError: Impossibile leggere la proprietà 'Destination' di undefined –

+0

'var dest = new AWS.Ses.Destination();' le definizioni potrebbero essere errate (sono lo sforzo migliore ... come qualsiasi altra documentazione). Usa un tipo di affermazione per costringerlo: https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html – basarat

+0

Sto facendo esattamente quello che hai detto, e non capisco bene il problema basta sapere come utilizzare le asserzioni di tipo per risolverlo. Tornerò su JavaScript per questo. Grazie per l'aiuto. –

5

Penso che un modo più appropriato per farlo è

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

per esempio

import { DynamoDb } from 'aws-sdk';

seguita da

this.client = new DynamoDB(); nella classe.

Dico che è più appropriato perché utilizza la sintassi di importazione di TypeScript.

+0

Questa dovrebbe essere la risposta migliore e l'approccio preferito. – demisx

Problemi correlati