2012-10-09 10 views
33

ho tal caso:funzione dattiloscritto espressione freccia restituendo l'oggetto

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

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

sto ottenendo tale errore: Il nome 'frequenza' non esiste nell'ambito corrente. Questa costruzione è possibile in TypeScript? Se sto usando tale costruzione, allora tutto è ok:

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

risposta

97

È possibile aggiungere parentesi:

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

Questo rende il parser capire che il {non è l'inizio di un blocco di codice.

+14

Puoi farlo anche tramite il cast. '() => {x: 1, y: 1}' –

+0

Non mi piace trasmettere a * any *. In realtà sono anche stato morso da casting al tipo di interfaccia di output desiderato, quando aggiungo una nuova proprietà all'interfaccia. Poiché stavo facendo un cast esplicito da un oggetto letterale (qualsiasi), VS Code non ha segnalato alcun errore anche se il letterale mancava la nuova proprietà. – superjos

Problemi correlati