[jquery] Add README describing usage and guidance for authoring jQuery plugin typedefs.

This commit is contained in:
Leonard Thieu
2017-06-21 15:42:33 -04:00
parent aa437becb7
commit 9b0cda8cdc

53
types/jquery/README.md Normal file
View File

@@ -0,0 +1,53 @@
### Usage
#### Global
When jQuery is globally available, you can use `jQuery` and `$` directly.
#### Importing (with a global DOM available)
When you want to import jQuery as a module and have a global DOM available (e.g. browser and browser-like environments):
```typescript
import * as jQuery from 'jquery';
```
#### Importing (without a global DOM available)
When you want to import jQuery as a module and do not have a global DOM available (e.g. Node.js environment):
```typescript
import jQueryFactory = require('jquery');
const jQuery = jQueryFactory(window, true);
```
Note that while the factory function ignores the second parameter, it is required to get correct type declarations.
### Authoring type definitions for jQuery plugins
`$.fn` is represented by `JQuery`.
`$` is represented by `JQueryStatic`.
Declare an interface that has the plugin's overloads as call signatures and static members as properties.
```typescript
interface MyPlugin {
settings: MyPluginSettings;
(behavior: 'enable'): JQuery;
(settings?: MyPluginSettings): JQuery;
}
interface MyPluginSettings {
title?: string;
}
```
Then declare a property on `JQuery` with your plugin's type.
```typescript
interface JQuery {
myPlugin: MyPlugin;
}
```