Typescript:使用静态/未命名函数实现接口

Typescript:使用静态/未命名函数实现接口,typescript,Typescript,我需要实现d.ts文件的以下(简化)类型脚本接口: interface SomeLibrary { someProperty: SomePropertyClass; someMethod(); (someParam: string): SomeClass; // don't know hot to implement this } 如何在自己的类中实现此接口?尤其是未命名的方法是有问题的。这些方法是如何调用的?TypeScript中的类无法满足您显示的接口 这样的接口通

我需要实现
d.ts
文件的以下(简化)类型脚本接口:

interface SomeLibrary {
    someProperty: SomePropertyClass;
    someMethod();
    (someParam: string): SomeClass; // don't know hot to implement this
}

如何在自己的类中实现此接口?尤其是未命名的方法是有问题的。这些方法是如何调用的?

TypeScript中的类无法满足您显示的接口

这样的接口通常用来描述使用不同模式的库

下面是如何满足该接口的一个示例:

var example: SomeLibrary = <any> function(someParam: string) {
    console.log('function called');
    return new SomeClass();
}
example.someProperty = new SomePropertyClass();
example.someMethod = function () { console.log('method called'); };

var x = example('x');
var y = example.someProperty;
var z = example.someMethod();
var示例:SomeLibrary=function(someParam:string){
log('function called');
返回新的SomeClass();
}
example.someProperty=new SomePropertyClass();
example.someMethod=function(){console.log('methodcalled');};
var x=示例('x');
var y=example.someProperty;
var z=example.someMethod();

本例中的
是什么意思?该表达式中的函数实际上不满足接口(因为它缺少
someProperty
someMethod
成员)。出于这个原因,您需要晃动类型来告诉编译器我知道这个类型是可以的,即使在您看来不是这样。如果您忘记添加接下来的两行,则会导致运行时问题!它是对any类型的强制转换吗?是-一个类型断言,它将函数扩展到
any
,因此可以通过前面的
SomeLibrary
类型注释来缩小它。这是一个