键入jQuery扩展

时间:2016-04-22 00:15:46

标签: jquery ajax interface typescript

其他人写了扩展名。它使用如下语法表示ajax进度事件:

$.ajax(url)
  .progress(function(e) {
    // tracking downloading
  })
  .uploadProgress(function(e) {
    // tracking uploading
    // if (e.lengthComputable) {
    //  var percentage = Math.round((e.loaded * 100) / e.total);
    //  console.log(percentage);
    //}
  });

TypeScript抱怨这些新方法不存在。

在我看来,我需要以某种方式将它们添加到JQueryXHR,这是在DefinitelyTyped的jquery.d.ts中定义的。这是第三方库,我不想编辑它 - 这会干扰更新。

如何将方法添加到已在我不想编辑的文件中定义的TypeScript接口?

1 个答案:

答案 0 :(得分:0)

  

如何将方法添加到已在我不想编辑的文件中定义的TypeScript接口

TypeScript接口是开放式的,旨在适应这种情况。

只需创建一个.disabled{ cursor: not-allowed; opacity: 0.8 /* ? it's up to you how you want to style it*/ }

thelib.d.ts

更多

https://basarat.gitbooks.io/typescript/content/docs/types/ambient/interfaces.html

相同但更强的打字

给出的答案解决了所提出的问题,并且具有简单的优点。但在现场你需要做得更好。这是更强大的打字。如果你想要“流利”,这很重要,例如.then()。fail()。done()等。

interface JQueryXHR {
  progress: any;
  uploadProgress: any;
}

您不需要三斜杠引用。大概是因为JQueryPromise是JQueryXHR主要定义的范围。