Porting Javascript requestAnimFrame til Loggfila

stemmer
4

Jeg er for tiden fast prøver å port denne koden for å typescript.

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());
      };
  })();
}

TSC feilen jeg får er:

medfølgende parametere samsvarer ikke noen underskrift av samtalen mål

Jeg har prøvd å erklære en interface WindowEx extends Windowsom inneholder signaturene, deretter støping til (< WindowEx>window).xxx, men jeg tviler på dette er den riktige måten å konvertere denne typiske kode.

Et forsøk:

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
}
Publisert på 04/10/2012 klokken 09:43
kilden bruker
På andre språk...                            


2 svar

stemmer
2

Her er hva jeg gjorde for å få koden til å kompilere. Jeg bare definert requestAnimFrame()som et globalt og skrevet det slik at Loggfila kan validere samtaler til det. Det er ikke noen fin måte å utvide bygget i typer som windowfor tiden derav behovet for å gjøre ting som (<any>window).webkitRequestAnimationFrame. Som en generell regel om kompilatoren klager, og du vet at det er gyldig Java du kan alltid kaste til <any>å gjøre det arbeidet.

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()); 
  }; 
})(); 
Svarte 04/10/2012 kl. 16:12
kilden bruker

stemmer
0

Grunnen de medfølgende parametrene ikke samsvarer med signaturen til samtalen målet er fordi du ringer en funksjon som dette:

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

Det vil si at funksjonen godtar callbackmen du er ikke bestått en i.

Du bør fjerne callbacksom en parameter fordi du ikke bruker den hvor som helst i funksjon.

Svarte 04/10/2012 kl. 11:34
kilden bruker

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