2014-01-13 2 views
2
에서를 다음 예제

컴파일러 불만 :수 없습니다 string` 타이프 라이터

function test() { 
     var regex = /.+/ig; 
     ''.replace(regex, function (matched, p1) { return ''; }); 
    } 

TypeScript의 버그입니까?

replace(searchValue: RegExp, replaceValue: (substring: string, ...args: any[]) => string): string; 

컴파일시에 우리가 얼마나 많은 모르는 replaceValue 기능은 수 일치 :

enter image description here

답변

2

그래서 여기에 일치하려는 lib.d.ts에서 선언 라인이다 처리해야합니다. 귀하의 함수가 그것을 처리 할 수 ​​있다고 말할 필요가 있도록 0 개의 일치가있을 수 있습니다. 여기은 다시 작성 : 옵션 컴파일러로 입력 p1

''.replace(regex, function (matched: string, p1?: string) { return ''; }); 

은 우리가 그 사건을 처리 할 수있는 만족한다. 유형을 지정하지 않고 매개 변수를 선택적으로 지정할 수있는 방법이 없으므로 매개 변수 유형도 지정했습니다.

+0

당신은 또한 추가 할 수 있습니다 '...'이런 P1에 : var에 R =/asdf을/g ''.replace (R, 기능 (일치, ... P1) { \t 복귀 ' ; }}); –

+0

오류 메시지는 매개 변수 2가 아니라 매개 변수 1에 대한 것입니다. String.prototype.replace는이 경우 매개 변수 1에 대한 문자열 만 허용하는 것으로 보입니다. – RyNo