Idea was born because of this answer.
I propose you should reconsider splitting options into two interfaces. One for constructor and one for common use. TypeScript users would gain a lot, since this tell us which properties exists on specific widget and are safe to use.
The other benefit is to avoid typecasting to any.
Propose definition structure:
class Window extends kendo.ui.Widget
{
static fn: Window;
options: WindowProperties;
//notice a change
readonly isMaximized?: boolean;
element: JQuery;
wrapper: JQuery;
static extend(proto: Object): Window;
constructor(element: Element, options?: WindowOptions);
center(): kendo.ui.Window;
close(): kendo.ui.Window;
content(): string;
content(content?: string): kendo.ui.Window;
content(content?: JQuery): kendo.ui.Window;
destroy(): void;
maximize(): kendo.ui.Window;
minimize(): kendo.ui.Window;
open(): kendo.ui.Window;
pin(): void;
refresh(options: any): kendo.ui.Window;
restore(): kendo.ui.Window;
setOptions(options: any): void;
title(): string;
title(text?: string): kendo.ui.Window;
toFront(): kendo.ui.Window;
toggleMaximization(): kendo.ui.Window;
unpin(): void;
}
interface WindowOptions {
name?: string;
actions?: any;
animation?: boolean|WindowAnimation;
appendTo?: any|string;
autoFocus?: boolean;
content?: WindowContent;
draggable?: boolean;
iframe?: boolean;
height?: number|string;
maxHeight?: number;
maxWidth?: number;
minHeight?: number;
minWidth?: number;
modal?: boolean;
pinned?: boolean;
position?: WindowPosition;
resizable?: boolean;
scrollable?: boolean;
title?: string|boolean;
visible?: boolean;
width?: number|string;
activate?(e: WindowEvent): void;
close?(e: WindowCloseEvent): void;
deactivate?(e: WindowEvent): void;
dragend?(e: WindowEvent): void;
dragstart?(e: WindowEvent): void;
error?(e: WindowErrorEvent): void;
maximize?(e: WindowEvent): void;
minimize?(e: WindowEvent): void;
open?(e: WindowEvent): void;
refresh?(e: WindowEvent): void;
resize?(e: WindowEvent): void;
}
interface WindowProperties extends WindowOptions
{
isMaximized?: boolean;
}