【问题标题】:How to extend external framework's d.ts (jQuery) without modifying the original? [duplicate]如何在不修改原始框架的情况下扩展外部框架的 d.ts (jQuery)? [复制]
【发布时间】:2014-02-27 05:15:03
【问题描述】:

我正在使用 jQuery,它的定义来自 Definitely Typed collection。我想用 Farbtastitc color picker 扩展它,直接向 JQueryStatic 广告新方法,例如:

$.farbtastic(placeholder)

我不想修改原始的jquery.d.ts 文件来添加这个方法,而是想用添加的方法创建类似jquery-extend.d.ts 的东西。

【问题讨论】:

  • 我会说用任意方法扩展框架很舒服,但不安全,而且设计不好。换句话说,JavaScript。
  • 嗨,Daniel,虽然我原则上同意这种说法,但它是 polyfills 的基础——所以能够做到这一点很重要,就像选择“何时不做”一样。跨度>
  • 我不是专家,但我可以想象用接口做同样的事情。但我真的不是专家。

标签: typescript


【解决方案1】:

我发现没有什么能阻止我向原始类添加新方法,所以我在 jquery-extend.d.ts 中简单声明:

interface JQueryStatic {
    farbtastic(element : string, callback? : Function) : Farbtastic;
}

interface JQuery {
    farbtastic(element : string, callback? : Function) : void;
}

interface Farbtastic {
    linkTo(callback : Function) : void;
    setColor(color : string) : void;
}

希望有一天这会对某人有所帮助。

【讨论】:

  • 您如何处理这个新的d.ts 文件以使其被识别和使用?我已经这样做了,但仍然收到我的新属性不存在的错误。我已经看到了对这个一般问题的一些答案,但没有一个解决如何处理这个文件才能使用它。我必须把它放在一个特定的位置吗?
  • @WillyC 在 .ts 文件的最顶部执行此操作: ///
猜你喜欢
  • 1970-01-01
  • 2018-05-29
  • 1970-01-01
  • 2011-10-31
  • 1970-01-01
  • 1970-01-01
  • 2016-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多