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

Posted

技术标签:

【中文标题】TypeScript 函数箭头表达式返回对象【英文标题】:TypeScript function arrow expression returning object 【发布时间】:2012-09-30 07:56:01 【问题描述】:

我有这样的情况:

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 
        

【问题讨论】:

【参考方案1】:

您可以添加括号:

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

这使解析器明白 不是代码块的开头。

【讨论】:

你也可以通过演员来做到这一点。 () => <any>x:1,y:1 我不喜欢投射到 any。实际上,在向接口添加新属性时,我也被强制转换为所需的输出接口类型。当我从(任何)对象文字进行显式转换时,即使文字缺少新属性,VS Code 也没有标记任何错误。【参考方案2】:

在您的第一个语句中,您没有返回对象。 如果您想忽略返回 object 的箭头函数中的 return 关键字,则需要将直接返回的值包装在 () 中。

这会让你的函数看起来像这样

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

【讨论】:

以上是关于TypeScript 函数箭头表达式返回对象的主要内容,如果未能解决你的问题,请参考以下文章

使用 TypeScript 函数返回 JSON 对象

如何在 TypeScript 中指定定义为对象文字的箭头函数的类型?

nodejs 箭头函数

coffeescript 函数 箭头表达式

map中使用箭头函数遇到的坑

TypeScript笔记三