2012-10-09 41 views
33

我有這樣的情況下:打字稿功能箭頭表達返回對象

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

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

我得到這樣的誤差:名稱「頻率」在當前範圍內不存在。在TypeScript中可以這樣做嗎?如果我使用這種結構則一切正常:

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

回答

97

您可以添加的括號:

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

這使得解析器明白,{不是一個代碼塊的開始。

+14

你也可以通過轉換來做到這一點。 '()=> {x:1,y:1}' –

+0

我不喜歡投射*任何*。實際上,我在剛剛添加一個新屬性到接口時,通過強制轉換爲所需的輸出接口類型而被咬傷。當我從(任何)對象文字中進行顯式轉換時,即使字面值缺少新屬性,VS Code也沒有標記任何錯誤。 – superjos