2014-01-14 2 views
8

void을 TypeScript의 제네릭 함수에 대한 형식 매개 변수로 지정할 수 있습니다. 그리고 그것은 함수의 반환 값에 대해 잘 작동합니다. 그러나 void이 인수의 형식 일 때 어떤 값을 사용할 수 있는지 분명하지 않습니다. void 유형의 인수에 대한 매개 변수를 지정하는 방법이 있습니까? 그렇다면 왜 그런 함수를 선언 할 수 있습니까? TypeScript specification에서TypeScript에서 제네릭 함수의 인수 형식으로 void

답변

0

void 값을 얻는 것은 매우 쉽다는 것이 밝혀졌습니다. 기술적으로는 여전히 undefined 값이지만, 타이프 라이터는 우리가 필요로 정확히 void 형으로 믿고 있지만 :

var voidValue = (function() { })(); 
7

:

주 :이 유용한 목적을 제공하지 않기 때문에 우리는 형 무효의 선언 변수를 허용하지 고려할 수 있습니다. 그러나 Void는 제네릭 형식 또는 함수에 대한 형식 인수로 허용되므로 Void 속성이나 매개 변수를 허용하지 않는 것이 적합합니다.

4

유형 인수로 void을 사용할 수 있지만 유형으로 사용하면 안됩니다. 현재 유형 약어로 사용할 수 있습니다 있지만 사실

는,이 값을 할당하는 것은 불가능 :

var x: void = ???; // cannot supply a value 

형식 인수로 무효의 사용은 아래에 설명되어

class Example<TReturn> { 
    process(func:() => TReturn) { 
     return func(); 
    } 
} 

이 클래스의 형식 인수는 함수의 반환 형식을 지정하는 데 사용됩니다. 즉, 해당 함수의 유형을 void으로 지정할 수 있습니다. 따라서 형식 인수로 허용되어야합니다.

var example = new Example<void>(); 

내가 example.process에 전화를 쓸 때 이제 자동 완성 내가 요구 사항을 전달하는 인수는 다음과 같은 유형의 만족 말해됩니다

func:() => void 

을 그리고 그것은 또한 example.process 자체 말해 것 공백은 이 경우입니다.

void은 형식에 주석을다는 데 사용되지 않지만 형식 인수로 허용해야하는 타당한 이유가 있으므로 현재 체크되지 않습니다. 그것은 당신이 유효하지 않은 뭔가를 만들 수 있다는 것을 의미합니다,하지만 당신은 열심히 그것을 사용하는 누를 것 : 당신이 전화를 쓸 수 없을 것입니다 (모든 오류를 표시하지 않는)이 유효하지 않은 예에서

class Example<T> { 
    process(func: T) { 
     // if T is void, this is all wrong 
    } 
} 

var example = new Example<void>(); 

을 유효한 인수를 전달할 수 없기 때문에 example.process입니다.

+1

죄송합니다. 내가 대답하지 않은 질문의 일부를 강조 해줄 수 있습니까? – Fenton

0

당신은 같은 것을 할 수 있습니다 : 나는 타이프 라이터를 사용하고

class Example<T> { 
    process(func: T = undefined) { 
    // use default undefined parameter 
    } 
} 

var example = new Example<void>(); 

exmple.process(); 

을 1.8.7 그리고 그것은 나를 위해 잘 일했다.