如何在不暴露函数属性的情况下声明函数接口

时间:2018-07-26 00:44:39

标签: typescript

例如,我正在为我的javascript库编写一个类型声明文件,其中包括:

interface test {
  (): void
  x: number
  y: number
}

我只希望公开以下内容:

  • test()
  • test.x
  • test.y

但是从Function继承的属性也会被公开:

  • test.caller
  • test.name
  • test.length
  • test.prototype

这会使我的IDE提供的建议变得混乱。

1 个答案:

答案 0 :(得分:2)

JavaScript不像C ++那样支持运算符重载,因此您不能重载()运算符以在JavaScript或TypeScript中创建函子类型的对象,因此,任何支持()的值运算符必须是JavaScript函数对象,这意味着它继承了callernamelengthprototype属性。没有办法解决这个问题。

  

这会使我的IDE提供的建议变得混乱。

这不是尝试颠覆您的语言系统的好理由。您应该向IDE供应商提出功能请求(如果是开源的,则提交补丁)以隐藏或不强调继承的成员。