我正在使用Jason Davies' TypeScript项目中的wordcloud,它基于D3库构建。具体来说,它定义了一个新的函数cloud(),它定义为从D3.layout扩展的成员,如 D3.layout.cloud()。要为TypeScript模块指定它,我需要在环境模块声明中定义它,我们在Boris Yankov的TypeScript declarations的确定列表中有。
有没有办法创建扩展现有声明的部分模块声明(.d.ts)文件?或者我是否必须编辑自己的标准声明文件副本(d3.d.ts)并在其中插入新成员?
PS感谢Davies先生和Yankov先生的努力,以这种方式学习TypeScript更加有趣:)。
答案 0 :(得分:4)
只需添加一个新界面(它们都被视为部分并由TypeScript合并)。
e.g。扩展jQuery
的定义我添加了这样的界面:
// Declare our additions to JQuery
interface JQuery
{
isDescendentOf(element: any);
attrString(): string;
cssInt(any): number;
cssFloat(any): number;
reverse(): JQuery;
// Compensate for missing (valid) trigger overload
trigger(event: JQueryEventObject, ...extraParameters: any[]): JQuery;
}
要扩展String
我这样做了:
interface String
{
startsWith(text: string): boolean;
}
要扩展Date对象(以支持部分“mm / yy”日期),我这样做了:
// Extend the date class, so we can include the partial flag
interface Date
{
isPartial: boolean;
isValid: boolean;
partialDate(): string;
}