შეიძლება არსებული JavaScript ობიექტები გამოიყენოთ ტიპებად TypeScript-ში?
მე მაქვს არსებული JavaScript ობიექტი. მინდა ვიყო ვხმარობ TypeScript-ში როგორც ტიპი, მაგრამ ვერ ვხედავ რაიმე გზას ამის გაკეთებისთვის. მაგალითისთვის, მე მაქვს JavaScript ობიექტის კონსტრუქტორი ასე:
function Canvas2D(canvas)
{
var context = canvas.getContext("2d");
this.clear = function() { context.clearRect(canvas.width, canvas.height); }
// lots more methods follow...
}
ჩემს TypeScript-ში მინდა გამოვაცხადო ცვლადი, რომელიც არის Canvas2D-ის მაგალითი. მე შემიძლია განვსაზღვრო, როგორც ტიპი "ნებისმიერი", მაგრამ ეს არ მაძლევს ავტომატურ შეთავაზებას და ერთგვარად უარყოფს TypeScript-ის გამოყენების უპირატესობებს.
class MyApp
{
private canvas2d: any;
// I want this instead
//private canvas2d: Canvas2D;
constructor(aCanvas) { this.canvas2d = new Canvas2D(aCanvas); }
}
არის რაიმე გზა ამის გაკეთებისთვის TypeScript-ში?
JavaScript-ში მე ამას შემიძლია გავაკეთო:
var canvas2D = new Canvas2D(aCanvas);
და ის (Visual Studio) მიხვდებოდა, რა ტიპის ობიექტთან ჰქონდა საქმე.
პასუხი #1
დიახ, ეს შესაძლებელია. თქვენ შეგიძლიათ გადატანოთ თქვენი Canvas2D ობიექტი TypeScript კლასში და შეეხოთ ფაილს
/// <reference path="Canvas2D.ts" />
MyApp ფაილის შიგნით.
ან
შეგიძლიათ შექმნათ განსაზღვრული ფაილი (Canvas2D.d.ts), რომელიც განსაზღვრავს Canvas2D კლასის ფორმას და გამოიყენოთ ის ნაცვლად.
/// <reference path="Canvas2D.d.ts" />
მაგალითი :
declare class Canvas2D {
constructor(elem: HTMLCanvasElement);
clear();
// Lots more methods here...
}
