Typescript 使用新的()签名声明接口,现在当我将接口用作对象时,它会给我函数属性吗?

Typescript 使用新的()签名声明接口,现在当我将接口用作对象时,它会给我函数属性吗?,typescript,typescript-typings,Typescript,Typescript Typings,所以基本上我现在正在为typescript键入一个类型声明文件,到目前为止一切都很好,但是我遇到了一些麻烦。我已经设置了一个const作为对象或函数,具体取决于调用它的方式,所以我有两个接口和一个const声明。 第一个接口文件使用new()和()签名来更改它的类型(如果它被作为函数或对象调用),否则它只是有一个可以调用的属性或函数列表(有点像一堆静态类函数)。问题是当我将这些签名添加到接口中时,它开始返回来自函数类型的属性。如果可能的话,这是我不希望发生的事情 我尝试过使用诸如,Exclude

所以基本上我现在正在为typescript键入一个类型声明文件,到目前为止一切都很好,但是我遇到了一些麻烦。我已经设置了一个const作为对象或函数,具体取决于调用它的方式,所以我有两个接口和一个const声明。 第一个接口
文件
使用
new()
()
签名来更改它的类型(如果它被作为函数或对象调用),否则它只是有一个可以调用的属性或函数列表(有点像一堆静态类函数)。问题是当我将这些签名添加到接口中时,它开始返回来自函数类型的属性。如果可能的话,这是我不希望发生的事情

我尝试过使用诸如,
Exclude
Pick
之类的方法,但没有成功

declare const File: File;

interface File
{
    new(path?: String): FileObject;
    (path?: String): FileObject | FolderObject;   
}
我希望
File.[property]
现在不返回任何内容,而是返回
File.[apply()| arguments | bind()| call()| caller | length | prototype | toString()]

另外,
文件().[property]
新文件().[property]
工作正常

答复:
对于你们中的一些人来说,在键入时(2019/02/17),没有办法排除这样的属性

使用
函数的属性有什么问题?在JavaScript中,可以调用或构造的每个值无论如何也必须是一个函数。目前无法从typescript中的可调用接口中排除这些属性,因为它在某个地方存在GitHub问题。。另外,除了代理之外,我认为任何可调用的js对象都将具有
函数的属性。哦,好吧,很有意义,谢谢大家,我现在就忍受它(它更像是一个干净的东西,而不是一个实际的功能性东西)。我能在GitHub中找到的最接近的问题是。。。这里的建议答案保留了键,但使值显示为不可用的类型(如
null
never
),但它们仍然以IntelliSense显示(这就是我在这里讨论的假设)。是的,我最后做了类似的事情,但感谢大家的提醒。