TypeScript函数箭头表达式返回对象

Dac*_*ina 49 typescript

我有这样的情况:

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

function GetMoverShaker() : MoverShaker {
    return {
        getStatus: () => { speed: 2, frequency: 3 }
    }
}
Run Code Online (Sandbox Code Playgroud)

我收到这样的错误:当前范围中不存在名称"频率".TypeScript中是否可以构建此类构造?如果我使用这样的结构,那么一切都还可以:

function GetMoverShaker(): MoverShaker {
    return {
        getStatus: () => {
             return { speed: 2, frequency: 3 }
        }
}
Run Code Online (Sandbox Code Playgroud)

Rog*_*son 121

你可以添加parens:

() => ({x:1,y:2})
Run Code Online (Sandbox Code Playgroud)

这使得解析器理解{不是代码块的开头.

  • 你也可以通过演员来做到这一点.`()=> <any> {x:1,y:1}` (19认同)
  • 我不喜欢施放*任何*.实际上,当我向接口添加新属性时,我也被扼杀到了所需的输出接口类型.当我从(任何)对象文字进行显式转换时,即使文字缺少新属性,VS Code也没有标记任何错误. (3认同)