2016-09-11 5 views
1

webworker-threads npm 라이브러리에 대한 정의 파일을 작성하려고합니다. 자신의 문서에서는 다음과 같이 새 작업자를 만들 수 있다고 말한다 :eval을 사용하여 타이글 타이핑 처리

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

트릭은 작업자를 구성하는 데 사용되는 함수 내부의 모든 것이 자기 변수를 통해 노동자 자체에 대한 액세스 권한을 가지고 있다는 것입니다. 이것은 코드에서 new Worker()에 전달 된 인수가 함수인지 여부를 확인하고 함수가 eval을 호출하는지 검사하여 수행됩니다. here을 참조하십시오.

이 내용을 입력하는 방법을 궁금합니다. 지금까지이있다, 그러나 그것은 작동하지 않습니다

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; 
} 
+0

무엇을하려하십니까? 그들이하고있는 것을 모방하거나 사용하려고 시도하고 싶습니까? 그들은 이미'Worker' 클래스를 제공하고 있기 때문에 왜 자신 만의 클래스를 만들어야합니까? –

+0

당신은 그들이'eval'을 실제로 사용하지 않는다는 것을 알고 있습니까? 그것은 자신의 코드에서 자신의 eval 구현입니다 –

+0

@NitzanTomer 여전히 비슷한 일을 수행합니다. 에 관계없이 내가 찾고 있던 답변은 Rem – watzon

답변

3

타이프 2.0 릴리스 후보 TS changelog 지금 당신이 쓸 수 :

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

이전 타이프 라이터 버전에서 나는이 캐스팅 추천 할 수 있습니다 작업자 콜백 내부.

+0

님이 제공 한 것입니다.이게 내가 찾고있는 것입니다! – watzon

+0

잠시 시간을내어 관련 [섹션] (https://github.com/Microsoft/TypeScript/wiki/What's-new-in-TypeScript#specifying-the-type-of-this-for-functions)을 찾으십시오. – artem

관련 문제