2012-10-09 14 views
33

Mam taką sprawę:funkcja maszynopis strzałka wyrażenie powrocie obiekt

interface MoverShaker { 
    getStatus(): { speed: number; frequency: number; }; 
} 

function GetMoverShaker() : MoverShaker { 
    return { 
     getStatus:() => { speed: 2, frequency: 3 } 
    } 
} 

Dostaję taki błąd: Nazwa „częstotliwość” nie istnieje w bieżącym zakresie. Czy taka konstrukcja jest możliwa w TypeScript? Jeśli używam takiej konstrukcji to wszystko jest ok:

function GetMoverShaker(): MoverShaker { 
    return { 
     getStatus:() => { 
      return { speed: 2, frequency: 3 } 
     } 
} 

Odpowiedz

97

Możesz dodać parens:

() => ({x:1,y:2}) 

To sprawia, że ​​parser zrozumieć, że {nie jest początek bloku kodu.

+14

Możesz to również zrobić przez rzutowanie. '() => {x: 1, y: 1}' –

+0

Nie podoba mi się rzutowanie na * dowolne *. Właściwie zostałem właśnie ugryziony przez odlewanie do pożądanego typu interfejsu wyjściowego, dodając nową właściwość do interfejsu. Podczas wykonywania wyraźnej obsady z (dowolnego) literału obiektowego kod VS nie zgłosił żadnego błędu, nawet jeśli literałowi brakowało nowej właściwości. – superjos