2017-09-13 2 views
0

typescript를 사용하면 다른 지역 변수에 할당 된 두 개의 서로 다른 함수가 다른 서명을하는 이유를 찾을 수 있습니다. 나는 그것이 더 명백하다고 생각했다. 왜이 typecript의 두 함수 유형이 다른가요?

let a: (number)=>number = 
    function(x: number): number {return 42;}; 

let z = function(x:number): number { return 42; }; 

> .type a 
let a: (number: any) => number 
> .type z 
let z: (x: number) => number 

나는 a 쓰기 z 단지보다 명시 버전이라고 생각하지만, 어떻게 든이 any을 받아들이으로 더 자유롭게 입력됩니다. 매개 변수 이름이 필요합니다 2.5.2

답변

3
let a: (number)=>number 

타이프 라이터 버전을 사용

. ,

let a: (x: number)=>number = 
    function(x: number): number {return 42;}; 

이름, x

let a: (number: any)=>number 

, 첫 number 여기에 "번호"

는 당신이 필요로하는 무엇이라는 이름의 매개 변수가 정의 : 이것은 정확히 동일합니다 상관 없어요.

+0

아아, 이름을 지정하거나 any 유형의 이름으로 가정합니다. 그건 꽤 바보 같아. 이름을 typechecking의 목적으로 중요하지 않습니다? –

+1

이름은 중요하지 않습니다 –

+1

FWIW : JavaScript와의 호환성을 유지하려면 그렇게해야합니다. – Pace

관련 문제