我有一段代码,我很难理解。我是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
结尾的比较结束?
这或多或少是正确的吗?
答案 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)
第二个参数是一个包含字段isEnabled
和execute
的对象字面值。你可能能够传递一个包含更多字段的对象文字,而没有registerHandler
的定义,这是不可能的。
对于作为箭头函数的() => true
,没有参数()
的函数返回true
。所以isEnabled
的类型是一个返回布尔值并且不带参数的函数。
execute
字段类似,它是一个没有参数且正文this.messageService.info('Hello World!')