VisualStudio 2012'de typcript'i test ediyorum ve tip sistemiyle ilgili bir problemim var. HTML sitemde "mycanvas" kimliğine sahip bir canvas etiketi var. Bu tuvale bir dikdörtgen çizmeye çalışıyorum. İşte kod
var canvas = document.getElementById("mycanvas");
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");
ctx.fillStyle = "#00FF00";
ctx.fillRect(0, 0, 100, 100);
Maalesef VisualStudio bundan şikayet ediyor
'getContext' özelliği 'HTMLElement' türünün değerinde mevcut değil
İkinci satırı bir hata olarak işaretler. Bunun sadece bir uyarı olacağını düşündüm ama kod derlenmiyor. VisualStudio diyor ki
yapı hataları vardı. Son başarılı derlemeye devam etmek ve çalıştırmak ister misiniz?
Bu hatayı hiç beğenmedim. Neden dinamik yöntem çağrısı yok? Sonuçta getContext yöntemi kesinlikle tuval öğemde var. Ancak bu sorunun çözülmesinin kolay olacağını düşündüm. Tuval için bir tür ek açıklaması ekledim:
var canvas : HTMLCanvasElement = document.getElementById("mycanvas");
var ctx: CanvasRenderingContext2D = canvas.getContext("2d");
ctx.fillStyle = "#00FF00";
ctx.fillRect(0, 0, 100, 100);
Ancak tip sistemi hala tatmin olmadı. İşte yeni hata mesajı, bu sefer ilk satırda:
'HTMLElement', 'HTMLCanvasElement'e dönüştürülemiyor:' HTMLElement 'türünde' HTMLCanvasElement 'türünden' toDataURL 'özelliği eksik
Tamamen statik yazmayı seviyorum ama bu, dili kullanılamaz hale getiriyor. Yazı sistemi ne yapmamı istiyor?
GÜNCELLEME:
Typescript gerçekten dinamik çağrı için destek sağlamıyor ve benim sorunum tipcast ile çözülebilir. Sorum temelde bu TypeScript'in bir kopyası: HTMLElement yayınlama
CanvasRenderingContext2D
yerine kullanmanın daha iyi olduğunu belirtmekte fayda varany
.