So I'm trying to use JQueryUI with TypeScript and so far I've installed JQueryUI with npm install jquery-ui-dist
and JQuery with npm install jquery
. I've also added the definition files from DefinitelyTyped with npm install --save-dev @types/jquery
and npm install --save-dev @types/jquery-ui
.
I've got the following file (some parts omitted):
///<reference path="../../node_modules/@types/jqueryui/index.d.ts"/>
import * as $ from "jquery";
import "jquery-ui";
export default class Resizer {
public static extraMargin = 5;
public static setVerticalResizer(...) {
...
let topElem: HTMLElement = <HTMLElement> cardElem.querySelector(".my-class");
$(topElem).resizable({
...
});
}
}
And upon building and running I get the following error:
Uncaught TypeError: r(...).resizable is not a function
So I guess there's some problem with my way of importing JQueryUI? Or maybe JQueryUI was not installed correctly? Although the import and definitions seem to be working correctly in VS Code.
This is also how I'm using them in the HTML file:
<script src="node_modules/jquery-ui-dist/jquery-ui.mis.js"></script>
<link rel="stylesheet" href="node_modules/jquery-ui-dist/jquery-ui.min.css">
Any ideas on how to solve the problem and use JQueryUI with TypeScript?
Update: see working jsfiddle
It's a problem when compiling the typescript. The
<script>
tags aren't important for that.When checking the
jqueryui/index.d.ts
, you could seeresizable
is defined there:(See index.d.ts on GitHub)
There is no jquery-ui? It should be @types/jqueryui
After correctly installing the packages @/types/jquery-ui it works for me:
In VS code:
Also from commandline, no errors and a javascript file is created (running from Powershell):
If is still not working, please share your tsconfig.json (if you have one) and the code and command how it doesn't compile
This is not a TypeScript error, this is a runtime error.
jQueryUI is actually being loaded twice!
Once via a script tag
and then again in your module.
The code in the module above is correct, but the script tag is causing failure.
Additionally, I see that you have
Remove this! While it won't cause a runtime issue, that construct is for use when application code itself is written using globals, not modules.
If the types are not automatically picked up, either specify
or use (shown with tsconfig.json next to node_modules)