2015-10-19 17 views
8

Tôi cố gắng để viết một ứng dụng SES nguyên cảo, sử dụng AWS định nghĩa tập tin tải về từ https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk.d.tsLàm cách nào để sử dụng định nghĩa sdk AWS cho TypeScript?

Dưới đây là những gì tôi đã cố gắng:

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

Đây là lỗi mà tôi nhận được:

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

Process finished with exit code 2 

Tôi không thể tìm thấy bất kỳ tài liệu nào về cách thực hiện công việc này. Hãy giúp tôi!

Trả lời

7

Thay đổi:

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

Lưu ý: nếu import không rõ ràng có thể bạn muốn đọc lên trên module: https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

TIP: luôn luôn là một ý tưởng tốt để xem tập tin thử nghiệm để sử dụng nhằm mục đích: https://github.com/borisyankov/DefinitelyTyped/blob/master/aws-sdk/aws-sdk-tests.ts

+1

Cảm ơn, điều đó thực sự hữu ích và nó đã giải quyết được vấn đề trước mắt của tôi, nhưng bây giờ tôi đang cố gắng sử dụng các định nghĩa kiểu thực tế. Ví dụ, làm cách nào để tạo một đối tượng Đích mới? Tôi đã thử 'var dest = new AWS.Ses.Destination();' nhưng tôi nhận được lỗi này: TypeError: Không thể đọc thuộc tính 'Destination' của undefined –

+0

'var dest = new AWS.Ses.Destination();' các định nghĩa có thể sai (chúng là nỗ lực tốt nhất ... như bất kỳ tài liệu nào). Sử dụng xác nhận loại để ép buộc: https://basarat.gitbooks.io/typescript/content/docs/types/type-assertion.html – basarat

+0

Tôi đang làm chính xác những gì bạn đã nói và tôi không hiểu rõ vấn đề đủ để biết cách xác nhận loại sử dụng để khắc phục. Tôi sẽ quay trở lại JavaScript cho việc này. Cảm ơn bạn đã giúp đỡ. –

5

Tôi nghĩ cách thích hợp hơn để thực hiện việc này là

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

ví dụ

import { DynamoDb } from 'aws-sdk';

Tiếp theo

this.client = new DynamoDB(); trong lớp.

Tôi nói nó phù hợp hơn vì nó sử dụng cú pháp nhập của TypeScript.

+0

Đây phải là câu trả lời hay nhất và cách tiếp cận ưa thích. – demisx

Các vấn đề liên quan