Portarea JavaScript requestAnimFrame pentru masina de scris

voturi
4

Eu sunt în prezent blocat încercând să port de acest cod pentru a dactilografiate.

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

Eroarea TSC I a lua este:

parametri furnizați nu se potrivesc cu orice semnătură de apel țintă

Am încercat declararea unei interface WindowEx extends Windowconținând semnături, apoi turnare a (< WindowEx>window).xxx, dar mă îndoiesc că acest lucru este modul corect de a converti acest cod „tipic“.

O incercare:

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
}
Întrebat 04/10/2012 la 10:43
sursa de către utilizator
În alte limbi...                            


2 răspunsuri

voturi
2

Iată ce am făcut pentru a obține codul dvs. pentru a compila. Tocmai am definit requestAnimFrame()ca la nivel mondial și tastare , astfel încât mașina de scris , ar putea valida apelurile către ea. Nu e nici o modalitate foarte bună de a extinde construit în tipuri cum ar fi , windowprin urmare , în prezent , necesitatea de a face lucruri cum ar fi (<any>window).webkitRequestAnimationFrame. Ca regulă generală , în cazul în care compilatorul se plânge și tu știi că e valabil JavaScript pe care îl puteți întotdeauna exprimate pentru <any>a face să funcționeze.

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()); 
  }; 
})(); 
Publicat 04/10/2012 la 17:12
sursa de către utilizator

voturi
0

Motivul pentru care parametrii furnizate nu corespund cu semnătura de țintă apel este pentru că apelată o funcție de genul:

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

Adică, funcția acceptă , callbackdar nu trec una în.

Ar trebui să eliminați callbackca parametru pentru că nu îl utilizați oriunde în funcție.

Publicat 04/10/2012 la 12:34
sursa de către utilizator

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