;
forEach(func: (value: any) => void ): void;
diff --git a/dot/dot-tests.ts b/dot/dot-tests.ts
new file mode 100644
index 000000000..59e6cff75
--- /dev/null
+++ b/dot/dot-tests.ts
@@ -0,0 +1,32 @@
+///
+
+var headertmpl = "{{=it.title}}
";
+
+var pagetmpl = "Here is the page using a header template< / h2 >\n"
+ + "{{#def.header}}\n"
+ + "{{=it.name}}";
+
+var customizableheadertmpl = "{{#def.header}}"
+ + "\n{{#def.mycustominjectionintoheader || ''} }";
+
+var pagetmplwithcustomizableheader = "Here is the page with customized header template
\n"
+ + "{{##def.mycustominjectionintoheader:\n"
+ + "
{{=it.title}} is not {{=it.name}}
\n"
+ + "#}}\n"
+ + "{{#def.customheader}}\n"
+ + "{{=it.name}}";
+
+var def = {
+ header: headertmpl,
+ customheader: customizableheadertmpl
+};
+var data = {
+ title: "My title",
+ name: "My name"
+};
+
+var pagefn = doT.template(pagetmpl, undefined, def);
+var content = pagefn(data);
+
+pagefn = doT.template(pagetmplwithcustomizableheader, undefined, def);
+var contentcustom = pagefn(data);
diff --git a/dot/dot.d.ts b/dot/dot.d.ts
new file mode 100644
index 000000000..2ab677c26
--- /dev/null
+++ b/dot/dot.d.ts
@@ -0,0 +1,50 @@
+// Type definitions for doT v1.0.1
+// Project: https://github.com/olado/doT
+// Definitions by: ZombieHunter
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare var doT: doT.doTStatic;
+
+declare module doT {
+
+ interface doTStatic {
+ /**
+ * Version number
+ */
+ version: string;
+ /**
+ * Default template settings
+ */
+ templateSettings: TemplateSettings;
+
+ /**
+ * Compile template
+ */
+ template(tmpl: string, c?: TemplateSettings, def?: Object): Function;
+
+ /**
+ * For express
+ */
+ compile(tmpl: string, def?: Object): Function;
+ }
+
+ interface TemplateSettings {
+ evaluate: RegExp;
+ interpolate: RegExp;
+ encode: RegExp;
+ use: RegExp;
+ useParams: RegExp;
+ define: RegExp;
+ defineParams: RegExp;
+ conditional: RegExp;
+ iterate: RegExp;
+ varname: string;
+ strip: boolean;
+ append: boolean;
+ selfcontained: boolean;
+ }
+}
+
+interface String {
+ encodeHTML(): string;
+}
\ No newline at end of file
diff --git a/ember/ember.d.ts b/ember/ember.d.ts
index 4657ac5cb..9bde2eca6 100644
--- a/ember/ember.d.ts
+++ b/ember/ember.d.ts
@@ -346,6 +346,10 @@ declare module Ember {
The call will be delayed until the DOM has become ready.
**/
ready: Function;
+ /**
+ Application's router.
+ **/
+ Router: Router;
}
/**
This module implements Observer-friendly Array-like behavior. This mixin is picked up by the
@@ -1569,8 +1573,13 @@ declare module Ember {
static metaForProperty(key: string): {};
static isClass: boolean;
static isMethod: boolean;
+ map(callback: Function): Router;
+ }
+ class RouterDSL {
+ resource(name: string, options?: {}, callback?: Function): void;
+ resource(name: string, callback: Function): void;
+ route(name: string, options?: {}): void;
}
- var RouterDSL: Function;
var SHIM_ES5: boolean;
var STRINGS: boolean;
class Select extends View {
@@ -2261,7 +2270,7 @@ declare module Em {
class RenderBuffer extends Ember.RenderBuffer { }
class Route extends Ember.Route { }
class Router extends Ember.Router { }
- var RouterDSL: typeof Ember.RouterDSL;
+ class RouterDSL extends Ember.RouterDSL { }
var SHIM_ES5: typeof Ember.SHIM_ES5;
var STRINGS: typeof Ember.STRINGS;
class Select extends Ember.Select { }
diff --git a/express/express.d.ts b/express/express.d.ts
index b97888998..6d87249cd 100644
--- a/express/express.d.ts
+++ b/express/express.d.ts
@@ -1451,6 +1451,8 @@ declare module "express" {
* @param callback or username
* @param realm
*/
+ export function basicAuth(callback: (user: string, pass: string, fn : Function) => void, realm?: string): Handler;
+
export function basicAuth(callback: (user: string, pass: string) => boolean, realm?: string): Handler;
export function basicAuth(user: string, pass: string, realm?: string): Handler;
diff --git a/firebase/firebase.d.ts b/firebase/firebase.d.ts
index 83f9ca84b..bac32fbc6 100644
--- a/firebase/firebase.d.ts
+++ b/firebase/firebase.d.ts
@@ -53,7 +53,7 @@ declare class Firebase implements IFirebaseQuery {
toString(): string;
set(value: any, onComplete?: (error: any) => void): void;
update(value: any, onComplete?: (error: any) => void): void;
- remove(onComplete?: (error: any) => void);
+ remove(onComplete?: (error: any) => void): void;
push(value: any, onComplete?: (error: any) => void): Firebase;
setWithPriority(value: any, priority: string, onComplete?: (error: any) => void): void;
setWithPriority(value: any, priority: number, onComplete?: (error: any) => void): void;
diff --git a/google.visualization/google.visualization.d.ts b/google.visualization/google.visualization.d.ts
index d478cf9aa..553c8e654 100644
--- a/google.visualization/google.visualization.d.ts
+++ b/google.visualization/google.visualization.d.ts
@@ -76,6 +76,7 @@ declare module google {
addRows(array: any[]): number;
getFilteredRows(filters: DataTableCellFilter[]): number[];
getFormattedValue(rowIndex: number, columnIndex: number): string;
+ getValue(rowIndex: number, columnIndex: number): any;
getNumberOfColumns(): number;
getNumberOfRows(): number;
removeRow(rowIndex: number): void;
diff --git a/googlemaps/google.maps.d.ts b/googlemaps/google.maps.d.ts
index ebe11fda9..4589e09f0 100644
--- a/googlemaps/google.maps.d.ts
+++ b/googlemaps/google.maps.d.ts
@@ -113,7 +113,8 @@ declare module google.maps {
scaleControl?: boolean;
scaleControlOptions?: ScaleControlOptions;
scrollwheel?: boolean;
- streetView?: boolean;
+ streetView?: StreetViewPanorama;
+ streetViewControl?: boolean;
streetViewControlOptions?: StreetViewControlOptions;
styles?: MapTypeStyle[];
tilt?: number;
diff --git a/jquery/jquery-tests.ts b/jquery/jquery-tests.ts
index c3fc3032f..57ba838ee 100644
--- a/jquery/jquery-tests.ts
+++ b/jquery/jquery-tests.ts
@@ -754,6 +754,61 @@ function test_submit() {
$("#target").submit();
}
+function test_trigger() {
+
+ $("#foo").on("click", function () {
+ alert($(this).text());
+ });
+ $("#foo").trigger("click");
+
+ $("#foo").on("custom", function (event, param1?, param2?) {
+ alert(param1 + "\n" + param2);
+ });
+ $("#foo").trigger("custom", ["Custom", "Event"]);
+
+ $("button:first").click(function () {
+ update($("span:first"));
+ });
+
+ $("button:last").click(function () {
+ $("button:first").trigger("click");
+ update($("span:last"));
+ });
+
+ function update(j) {
+ var n = parseInt(j.text(), 10);
+ j.text(n + 1);
+ }
+
+ $("form:first").trigger("submit");
+
+ var event = jQuery.Event("submit");
+ $("form:first").trigger(event);
+ if (event.isDefaultPrevented()) {
+ // Perform an action...
+ }
+
+ $("p")
+ .click(function (event, a, b) {
+ // When a normal click fires, a and b are undefined
+ // for a trigger like below a refers to "foo" and b refers to "bar"
+ })
+ .trigger("click", ["foo", "bar"]);
+
+ var event = jQuery.Event("logged");
+ (event).user = "foo";
+ (event).pass = "bar";
+ $("body").trigger(event);
+
+ // Adapted from jQuery documentation which may be wrong on this occasion
+ var event2 = jQuery.Event("logged");
+ $("body").trigger(event2, {
+ type: "logged",
+ user: "foo",
+ pass: "bar"
+ });
+}
+
function test_clone() {
$('.hello').clone().appendTo('.goodbye');
var $elem = $('#elem').data({ "arr": [1] }),
diff --git a/jquery/jquery.d.ts b/jquery/jquery.d.ts
index 0d26a8253..235022bf9 100644
--- a/jquery/jquery.d.ts
+++ b/jquery/jquery.d.ts
@@ -18,6 +18,7 @@ See the Apache Version 2.0 License for specific language governing permissions
and limitations under the License.
***************************************************************************** */
+
/**
* Interface for the AJAX setting that will configure the AJAX request
*/
@@ -485,14 +486,6 @@ interface JQueryAnimationOptions {
specialEasing?: Object;
}
-/**
- * The interface used to specify easing functions.
- */
-interface JQueryEasing {
- linear(p: number): number;
- swing(p: number): number;
-}
-
/**
* Static members of jQuery (those on $ and jQuery themselves)
*/
@@ -2538,8 +2531,34 @@ interface JQuery {
*/
submit(eventData?: any, handler?: (eventObject: JQueryEventObject) => any): JQuery;
- trigger(eventType: string, ...extraParameters: any[]): JQuery;
- trigger(event: JQueryEventObject): JQuery;
+ /**
+ * Execute all handlers and behaviors attached to the matched elements for the given event type.
+ *
+ * @param eventType A string containing a JavaScript event type, such as click or submit.
+ * @param extraParameters Additional parameters to pass along to the event handler.
+ */
+ trigger(eventType: string, extraParameters?: any[]): JQuery;
+ /**
+ * Execute all handlers and behaviors attached to the matched elements for the given event type.
+ *
+ * @param eventType A string containing a JavaScript event type, such as click or submit.
+ * @param extraParameters Additional parameters to pass along to the event handler.
+ */
+ trigger(eventType: string, extraParameters?: Object): JQuery;
+ /**
+ * Execute all handlers and behaviors attached to the matched elements for the given event type.
+ *
+ * @param event A jQuery.Event object.
+ * @param extraParameters Additional parameters to pass along to the event handler.
+ */
+ trigger(event: JQueryEventObject, extraParameters?: any[]): JQuery;
+ /**
+ * Execute all handlers and behaviors attached to the matched elements for the given event type.
+ *
+ * @param event A jQuery.Event object.
+ * @param extraParameters Additional parameters to pass along to the event handler.
+ */
+ trigger(event: JQueryEventObject, extraParameters?: Object): JQuery;
triggerHandler(eventType: string, ...extraParameters: any[]): Object;
diff --git a/jqueryui/jqueryui.d.ts b/jqueryui/jqueryui.d.ts
index 3a1823a92..41cc3214d 100644
--- a/jqueryui/jqueryui.d.ts
+++ b/jqueryui/jqueryui.d.ts
@@ -714,7 +714,7 @@ declare module JQueryUI {
distance?: number;
}
- interface keyCode {
+ interface KeyCode {
BACKSPACE: number;
COMMA: number;
DELETE: number;
@@ -751,7 +751,7 @@ declare module JQueryUI {
buttonset: Button;
datepicker: Datepicker;
dialog: Dialog;
- keyCode: keyCode;
+ keyCode: KeyCode;
menu: Menu;
progressbar: Progressbar;
slider: Slider;
diff --git a/mapsjs/mapsjs.d.ts b/mapsjs/mapsjs.d.ts
index 46367fc50..a71cb1ad5 100644
--- a/mapsjs/mapsjs.d.ts
+++ b/mapsjs/mapsjs.d.ts
@@ -428,7 +428,7 @@ declare module 'mapsjs' {
* @param {number} [idx] Index of the line for which to compute the distance.
* @returns {number} Distance in meters of the line.
*/
- getActualDistance(idx: number): number;
+ getActualDistance(idx?: number): number;
/**
* Determines whether this polyline intersects a given geometry.
@@ -509,7 +509,7 @@ declare module 'mapsjs' {
* @param {number} [idx] Index of the ring for which to compute the area.
* @returns {number} Area in square meters of the ring.
*/
- getActualArea(idx: number): number;
+ getActualArea(idx?: number): number;
/**
* Calculates perimeter of a ring in a polygon by index according
@@ -518,7 +518,7 @@ declare module 'mapsjs' {
* @param {number} [idx] Index of the ring for which to compute the perimeter.
* @returns {number} Length in meters of the perimeter of the ring.
*/
- getActualPerimeter(idx: number): number;
+ getActualPerimeter(idx?: number): number;
/**
* Determines whether this polygon intersects a given geometry.
@@ -548,7 +548,7 @@ declare module 'mapsjs' {
* @class geometryStyle
*/
export class geometryStyle {
- constructor();
+ constructor(options?: styleObj);
/**
* Gets path outline thickness in pixels.
@@ -899,8 +899,14 @@ declare module 'mapsjs' {
* @class styledGeometry
*/
export class styledGeometry {
- constructor(geom: geometry, gStyle: geometryStyle);
+ constructor(geom: geometry, gStyle?: geometryStyle);
+ /**
+ * Set this styledGeometry's geometry.
+ * @param {geometry} g A new Geometry.
+ */
+ setGeometry(g: geometry): void;
+
/**
* Set this styledGeometry's geometryStyle.
* @param {geometryStyle} gs A new styledGeometry.
@@ -912,6 +918,12 @@ declare module 'mapsjs' {
* @returns {geometry} The underlying geometry.
*/
getGeometry(): geometry;
+
+ /**
+ * Gets the styledGeometry's underlying geometryStyle object.
+ * @returns {geometryStyle} The underlying geometry style.
+ */
+ getGeometryStyle(): geometryStyle;
/**
* Gets path outline thickness in pixels.
@@ -933,7 +945,7 @@ declare module 'mapsjs' {
/**
* Gets path outline opacity in decimal format.
- * @returns {number} Outline opacity.
+ * @param {number} Outline opacity.
*/
setOutlineColor(c: string): void;
@@ -1322,6 +1334,11 @@ declare module 'mapsjs' {
ulX: number;
ulY: number;
};
+
+ /**
+ * Unbind all associations with this tile layer to facilitate garbage collection
+ */
+ dispose(): void;
}
/**
@@ -2221,8 +2238,53 @@ declare module 'mapsjs' {
* @returns {number} maxY coord as integer
*/
maxY: number;
- }
-
+ }
+
+ interface extentChangeStatsObj {
+
+ centerX: number;
+ centerY: number;
+ centerLat: number;
+ centerLon: number;
+ zoomLevel: number;
+ mapScale: number;
+ mapScaleProjected: number;
+ mapUnitsPerPixel: number;
+ extents: envelope;
+ }
+
+ interface repositionStatsObj {
+
+ centerX: number;
+ centerY: number;
+ zoomLevel: number;
+ mapUnitsPerPixel: number;
+ }
+
+ interface beginDigitizeOptions {
+ key?: string;
+ shapeType: string;
+ geometryStyle?: geometryStyle;
+ styledGeometry?: styledGeometry;
+ nodeTapAndHoldAction?: (setIdx: number, idx: number) => boolean;
+ nodeMoveAction?: (x: number, y: number, actionType: string) => any;
+ shapeChangeAction?: () => void;
+ envelopeEndAction?: (env: envelope) => void;
+ circleEndAction?: (circle: geometry.polygon) => void;
+ suppressNodeAdd?: boolean;
+ leavePath?: boolean;
+ }
+
+
+ interface styleObj {
+ fillColor?: string;
+ fillOpacity?: number;
+ outlineColor?: string;
+ outlineOpacity?: number;
+ outlineThicknessPix?: number
+ dashArray?: string;
+ }
+
interface mapsjsWidget {
/**
@@ -2512,12 +2574,18 @@ declare module 'mapsjs' {
* content area DOM. If an attempt to add a geometry is made with the same
* key, the geometry is swapped out. You must remove using removePathGeometry
* for resource cleanup.
- * @param {styleGeometry} styledGeom THe styledGeometry to render.
- * @param {string} key String used to tie a geometry to its SVG
+ * @param {styleGeometry} styledGeom The styledGeometry to render.
+ * @param {string} key String used to tie a geometry to its SVG
+ * @param {function} addAction optional function that is called when mapsjs adds an svg element to the DOM representing this styledGeometry.
+ * @param {function} removeAction optional function that is called when mapsjs adds an svg element to the DOM representing this styledGeometry.
* rendering in the DOM.
* @returns {element} The SVG element which was added to the DOM.
*/
- addPathGeometry(styledGeom: styledGeometry, key: string): void;
+ addPathGeometry(
+ styledGeom: styledGeometry,
+ key: string,
+ addAction?: (svg: SVGElement) => void,
+ removeAction?: (svg: SVGElement) => void): SVGElement;
/**
* Updates an existing path geometry to reflect a style change.
@@ -2529,41 +2597,34 @@ declare module 'mapsjs' {
/**
* Removes a styledGeometry from display.
* @param {string} key The key of the geometry to remove.
+ * @returns {element} The SVG element which was removed from the DOM.
*/
- removePathGeometry(key: string): void;
+ removePathGeometry(key?: string): SVGElement;
/**
* Initiates digitization on the map control. This creates a new
* geometry and adds verticies to the geometry accord to mouse
* click locations.
* @param {object} options JavaScript object of the form { key,
- * shapeType, geometryStyle, nodeTapAndHoldAction, nodeMoveAction,
- * shapeChangeAction, envelopeEndAction, supressNodeAdd, leavePath }
+ * shapeType, geometryStyle, styledGeometry, nodeTapAndHoldAction, nodeMoveAction,
+ * shapeChangeAction, envelopeEndAction, circleEndAction, supressNodeAdd, leavePath }
* where key is a a string associated with this geometry, shapeType
- * is the type of shape this geometry is, one of 'point', 'path', or
- * 'polygon', geometryStyle is a geometryStyle which should be applied
- * to the digitized geometry, nodeTapAndHoldAction is a callback invoked
+ * is the type of shape this geometry is, one of 'polygon', 'polyline', 'multipoint', 'envelope' or 'circle',
+ * geometryStyle is a geometryStyle which should be applied
+ * to the digitized geometry, styledGeometry is an optional styledGeometry for existing paths to edit, set this to enter edit mode,
+ * nodeTapAndHoldAction is a callback invoked
* when any point in the geometry is clicked and held and has the
* signature nodeTapAndHoldAction(setIdx, idx), nodeMoveAction is a
* callback invoked after any node is dragged to a new location and
* has signature nodeMoveAction(x, y, actionType), shapeChangeAction
* is a callback that is invoked after the geometry shape changes and,
- * has signature shapeChangeAction(), envelopeEndAction is a callback
+ * has signature shapeChangeAction(shape), envelopeEndAction is a callback
* invoked after an envelope is created and has signature envelopeEndAction(envelope),
+ * circleEndAction is similar to envelopeEndAction but takes a geometry.polygon representing the circle,
* and leavePath is a flag that indicates whether the digitized shape
* should be left on the map after digitization is complete.
*/
- beginDigitize(options: {
- key?: string;
- shapeType: string;
- geometryStyle?: geometryStyle;
- nodeTapAndHoldAction?: (setIdx: number, idx: number) => boolean;
- nodeMoveAction?: (x: number, y: number, actionType: string) => any;
- shapeChangeAction?: () => void;
- envelopeEndAction?: (env: envelope) => void;
- suppressNodeAdd?: boolean;
- leavePath?: boolean;
- }): void;
+ beginDigitize(options: beginDigitizeOptions): void;
endDigitize(): void;
/**
@@ -2606,7 +2667,7 @@ declare module 'mapsjs' {
* the form { centerX, centerY, centerLat, centerLon, zoomLevel, mapScale,
* mapScaleProjected, mapUnitsPerPixel, extents }.
*/
- setExtentChangeCompleteAction(action: (vals: {}) => void): void;
+ setExtentChangeCompleteAction(action: (vals: extentChangeStatsObj) => void): void;
/**
* Set the function called when map content (map tiles and fixed elements) are
@@ -2616,7 +2677,7 @@ declare module 'mapsjs' {
* completes repositioning with signature action(object) where object
* is of the form { centerX, centerY, zoomLevel, mapUnitsPerPixel }.
*/
- setContentRepositionAction(action: (vals: {}) => void): void;
+ setContentRepositionAction(action: (vals: repositionStatsObj) => void): void;
/**
* Sets function called when map is clicked or tapped.
diff --git a/marionette/marionette.d.ts b/marionette/marionette.d.ts
index dca2915c5..3427d6de4 100644
--- a/marionette/marionette.d.ts
+++ b/marionette/marionette.d.ts
@@ -112,8 +112,8 @@ declare module Marionette {
function unbindEntityEvents(target, entity, bindings);
class Callbacks {
- add(callback, contextOverride): void;
- run(options, context): void;
+ add(callback:Function, contextOverride:any): void;
+ run(options:any, context:any): void;
reset(): void;
}
@@ -269,11 +269,18 @@ declare module Marionette {
render(): Layout;
removeRegion(name: string);
}
+
+ interface AppRouterOptions extends Backbone.RouterOptions {
+ appRoutes: any;
+ controller: any;
+ }
class AppRouter extends Backbone.Router {
- constructor(options?: any);
- processAppRoutes(controller: Controller, appRoutes: any);
+ constructor(options?: AppRouterOptions);
+ processAppRoutes(controller: any, appRoutes: any);
+ appRoute(route:string, methodName:string):void;
+
}
class Application extends Backbone.Events {
@@ -288,6 +295,7 @@ declare module Marionette {
addInitializer(initializer);
start(options?);
addRegions(regions);
+ closeRegions(): void;
removeRegion(region: Region);
getRegion(regionName: string): Region;
module(moduleNames, moduleDefinition);
diff --git a/socket.io-client/socket.io-client-tests.ts b/socket.io-client/socket.io-client-tests.ts
new file mode 100644
index 000000000..7b5f96747
--- /dev/null
+++ b/socket.io-client/socket.io-client-tests.ts
@@ -0,0 +1,10 @@
+import io = require('socket.io-client');
+
+var socket = io.connect('http://localhost:80');
+
+socket.on('connect', function () {
+ console.log('Connected!');
+ socket.emit('event', 'some test data', function () {
+ console.log('Sent some data.');
+ });
+});
diff --git a/socket.io-client/socket.io-client.d.ts b/socket.io-client/socket.io-client.d.ts
new file mode 100644
index 000000000..e4c6e0e38
--- /dev/null
+++ b/socket.io-client/socket.io-client.d.ts
@@ -0,0 +1,33 @@
+// Type definitions for socket.io nodejs client
+// Project: http://socket.io/
+// Definitions by: Maido Kaara
+// Definitions: https://github.com/borisyankov/DefinitelyTyped
+
+declare module "socket.io-client" {
+
+ export function connect(host: string, details?: any): Socket;
+
+ interface EventEmitter {
+ emit(name: string, ...data: any[]): any;
+ on(ns: string, fn: Function): EventEmitter;
+ addListener(ns: string, fn: Function): EventEmitter;
+ removeListener(ns: string, fn: Function): EventEmitter;
+ removeAllListeners(ns: string): EventEmitter;
+ once(ns: string, fn: Function): EventEmitter;
+ listeners(ns: string): Function[];
+ }
+
+ interface SocketNamespace extends EventEmitter {
+ of(name: string): SocketNamespace;
+ send(data: any, fn: Function): SocketNamespace;
+ emit(name: string): SocketNamespace;
+ }
+
+ interface Socket extends EventEmitter {
+ of(name: string): SocketNamespace;
+ connect(fn: Function): Socket;
+ packet(data: any): Socket;
+ flushBuffer(): void;
+ disconnect(): Socket;
+ }
+}
diff --git a/sugar/sugar.d.ts b/sugar/sugar.d.ts
index ca21b3e7c..e5f9c97d7 100644
--- a/sugar/sugar.d.ts
+++ b/sugar/sugar.d.ts
@@ -2133,7 +2133,7 @@ interface Array {
* }, 2, true);
**/
each(
- fn: (element: T, index: number, array: T[]) => boolean,
+ fn: (element: T, index?: number, array?: T[]) => any,
index?: number,
loop?: boolean): T[];
@@ -3386,7 +3386,7 @@ interface ObjectStatic {
* });
*
**/
- watch(obj: any, prop: string, fn: (prop: string, oldVal: any, newVal: any) => any): void;
+ watch(obj: any, prop: string, fn: (prop?: string, oldVal?: any, newVal?: any) => any): void;
}
interface Object {
@@ -3836,7 +3836,7 @@ interface Object {
* });
*
**/
- watch(prop: string, fn: (prop: string, oldVal: any, newVal: any) => any): void;
+ watch(prop: string, fn: (prop?: string, oldVal?: any, newVal?: any) => any): void;
}
interface Function {
diff --git a/underscore.string/underscore.string.d.ts b/underscore.string/underscore.string.d.ts
index d016dc908..db9ec042d 100644
--- a/underscore.string/underscore.string.d.ts
+++ b/underscore.string/underscore.string.d.ts
@@ -562,5 +562,7 @@ interface UnderscoreStringStaticExports {
toBoolean(str: string, trueValues?: any[], falseValues?: any[]): boolean;
}
-
+declare module "underscore.string" {
+export = UnderscoreStringStatic;
+}
// TODO interface UnderscoreString extends Underscore