- Notifications
You must be signed in to change notification settings - Fork 13k
Closed
Labels
QuestionAn issue which isn't directly actionable in codeAn issue which isn't directly actionable in code
Description
jQuery (jQuery UI) support method extensions. If we write my own jQuery UI widget, I can do this:
In myWidget.ts:
interface JQuery { myWidget(): JQuery } class myWidget { public foo() { // This is okay now, but will fail once we add some import statements to this file, // because TypeScript thinks this JQuery is not that JQuery var some: JQuery = $("#some-id").text(); } } $.fn.extend({ myWidget() {...} });
Then in another file:
$(selector).myWidget(); // Create a new myWidget, this is okay because of myWidget() is declared in my version of JQuery interface $(selector).attr("id", "my-id"); // This is okay because attr is declared in jquery.d.ts
However, this stops working when I add this line to myWidget.ts:
import helpers = require("helpers");
Now TypeScript thinks there 2 JQuery interfaces, instead of merging them into one. How do I tell TypeScript that I'm not creating a new interface for this module, but need to merge it with an existing interface?
Metadata
Metadata
Assignees
Labels
QuestionAn issue which isn't directly actionable in codeAn issue which isn't directly actionable in code