1

使用 jQuery UI 小部件时,您通常会得到遵循以下模式的内容:

$("#someId").someWidget("option", "someOption", value);

有没有一种很好的方法来模拟这种交互以从 TypeScript 中获得一些有用的类型检查?从技术上讲,您可能有这样定义的方法:

someWidget(optionLiteral: string, optionName: string, optionValue: any): JQuery;

(根据提供的 jQuery UI 类型定义建模)

因此,无论选项名称如何,选项值基本上都是“任何”。有没有办法进一步重载类型定义,并可能对 optionName 进行一些模式匹配?或者有没有这方面的计划?

4

1 回答 1

3

您可能想深入了解 jQuery UI 示例,

http://www.typescriptlang.org/Samples/#Warship

其中涵盖了如何使用其他方法扩展 jQuery 接口类型。

jQuery 类型是接口类型,接口类型在 TypeScript 中是开放的,这意味着以后的编译单元可以向该类型添加成员。你的例子会写成,

interface JQuery {
    someWidget(optionLiteral: string, optionName: string, optionValue: any): JQuery
}

至于重载,方法可以在类型上重载,但不能在值上重载。重载值会在 CodePlex 网站上提出很好的建议。

于 2012-10-01T20:21:53.363 回答