JavaScript requestAnimFrame uyarlanır? Typescript için

oy
4

Şu anda limana typescript için bu kodu çalışırken takılıp ediyorum.

if (typeof window !== 'undefined') {
  window.requestAnimFrame = (function(callback){
      return window.requestAnimationFrame ||
      window.webkitRequestAnimationFrame ||
      window.mozRequestAnimationFrame ||
      window.oRequestAnimationFrame ||
      window.msRequestAnimationFrame ||
      function(callback){
          window.setTimeout(callback, 1000 / 60, new Date().getTime());
      };
  })();
}

Ben olsun tsc hatadır:

Sağlanan parametreleri çağrı hedefinin herhangi imza eşleşmiyor

Bir ilan denedim interface WindowEx extends Windowiçin döküm ardından, imzalar içeren (< WindowEx>window).xxx, ama bu bu tipik kod dönüştürmek için en doğru yoludur şüpheliyim.

Bir girişim:

interface WindowEx extends Window {
  requestAnimFrame(callback, target?):number;
  webkitRequestAnimationFrame(callback, target?):number;
  mozRequestAnimationFrame(callback, target?):number;
  oRequestAnimationFrame(callback, target?):number;
  // msRequestAnimationFrame already at WindowAnimationTiming interface
}
Oluştur 04/10/2012 saat 10:43
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
2

İşte kodunuzu derlemek için almak yaptık. Sadece tanımlanmış requestAnimFrame()global olarak ve typescript kendisine aramaları doğrulamak diye yazmış olmanızdır. Gibi türleri inşa uzanan herhangi büyük bir yolu yok değil windowgibi şeyler yapmak halen dolayısıyla ihtiyaç (<any>window).webkitRequestAnimationFrame. Genel bir kural olarak derleyici şikayet ve bunu her zaman yayın yapabilirsiniz geçerli bir JavaScript biliyorum eğer <any>o iş yapmak.

var requestAnimFrame: (callback: () => void) => void = (function(){ 
  return window.requestAnimationFrame || 
  (<any>window).webkitRequestAnimationFrame || 
  (<any>window).mozRequestAnimationFrame || 
  (<any>window).oRequestAnimationFrame || 
  window.msRequestAnimationFrame || 
  function(callback){ 
      window.setTimeout(callback, 1000 / 60, new Date().getTime()); 
  }; 
})(); 
Cevap 04/10/2012 saat 17:12
kaynak kullanıcı

oy
0

Eğer böyle bir işlevi diyoruz çünkü verilen parametreler çağrı hedefinin imzasını eşleşmeyen nedeni:

(function(callback) { ... })();

Bu işlev kabul eder, olduğu callbackancak bir tane iletmediğinizi.

Sen kaldırmalısınız callbackher yerde işlevinde kullanmadığınız çünkü bir parametre olarak.

Cevap 04/10/2012 saat 12:34
kaynak kullanıcı

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more