带有空函数的TypeScript作为参数?

时间:2018-04-13 08:59:44

标签: typescript

我有一段代码,我很难理解。我是TypeScript的新手。

registerCommands(registry: CommandRegistry): void {
    registry.registerCommand(FensterCommands.HELLOWORLD);
    registry.registerHandler(FensterCommands.HELLOWORLD.id, {
        isEnabled: () => true,
        execute: () => this.messageService.info('Hello World!')
    });
}

有人可以帮我理解上面的代码吗?我不明白的是registry.registerHandler(...)中的第二个类似JSON的参数。此参数值具有什么类型,位于大括号{...}内?第一个参数的名称为isEnabled,对吗?它的价值是什么?是()还是true?空函数()是什么意思?整行() => true是否以true/false结尾的比较结束?

这或多或少是正确的吗?

2 个答案:

答案 0 :(得分:2)

registry.registerHandler 的第二个参数是什么类型,取决于函数的定义,它是一个对象但是 你提供的信息不够清晰 - 它可能是一个界面甚至任何......

尽管如此:

   isEnabled: () => true,

可能将 isEnabled 设置为不带参数的函数,该函数返回布尔值

  execute: () => this.messageService.info('Hello World!')

可能会将执行设置为不带参数的函数,该函数将返回 this.messageService.info('Hello World!')的返回类型。

这两个函数都以ES6 Arrow functions

声明

它也可以写成:

(假设 this.messageService.info('Hello World!')将不返回/ void)

{
       isEnabled: function() { return true; },
       execute: function() { this.messageService.info('Hello World!'); }
}

答案 1 :(得分:1)

第二个参数是一个包含字段isEnabledexecute的对象字面值。你可能能够传递一个包含更多字段的对象文字,而没有registerHandler的定义,这是不可能的。

对于作为箭头函数的() => true,没有参数()的函数返回true。所以isEnabled的类型是一个返回布尔值并且不带参数的函数。

execute字段类似,它是一个没有参数且正文this.messageService.info('Hello World!')

的函数
相关问题