用eval处理打字稿

我正在尝试为webworker-threads npm库编写一个定义文件。 在他们的文档中说,你可以创build一个新的工作,如下所示:

let worker = new Worker(function() { this.postMessage('worker created'); this.close(); }); 

诀窍是用于构造worker的那个函数的所有内容都可以通过一个selfvariables来访问worker本身。 这是在他们的代码中通过检查传递给new Worker()的参数是否是一个函数来完成的,如果是这样,则调用eval。 看到这里 。

我想知道如何用我的types复制这个。 到目前为止,我有这个,但它不工作:

 export class Worker { public onmessage: (event: any) => any; public thread: Thread; constructor(fn?: Worker | string); // <= Doesn't work because technically the function passed in isn't a worker, it just accesses the new Worker as if it were. public postMessage(data: any): void; public terminate(): void; public addEventListener(type: string, cb: (event: any) => any): void; public removeEventListener(type: string): void; } 

在ReleaseScript 2.0中的TypeScript 2.0中,现在可以编写:

 constructor(fn?: (this: Worker) => any); 

在较旧的TypeScript版本中,我可以推荐在callback中将其转换为Worker。