我正在尝试将胖箭头功能与控制器中的nestjs装饰器一起使用。
那么有可能做这样的事情:
@Controller()
export class AppController {
@Get()
findAll = (): string => 'This is coming from a fat arrow !';
}
使用此代码打字稿告诉我:Unable to resolve signature of property decorator when called as an expression
,所以它不起作用。
我更喜欢使用粗箭头功能代替此“传统”功能:
@Controller()
export class AppController {
@Get()
findAll(): string {
return 'This is not comming from a fat arrow';
}
}
这就是为什么我问这样的事情是否可能。
答案 0 :(得分:1)
我会说答案是否定的,原因是arrow function
与JavaScript中的function
有所不同,即更改了词法this
和arguments
。 This answer详细介绍了function () {}
与myFunction = () => {}
的不同之处。
此外,使用箭头函数将禁止大量使用类函数,因此,如果要注入服务的任何实例,则将无法使用它们。
@Injectable()
export class AppController {
constructor (private readonly appService: AppService) {}
@Get('/')
hello(): string {
return this.appService.sayHello();
}
}
可以正常工作,并从appService.sayHello()
函数返回字符串,但这
@Injectable()
export class AppController {
constructor (private readonly appService: AppService) {}
@Get('/')
hello = (): string => {
return this.appService.sayHello();
}
}
不会从appService.sayHello()
函数返回字符串,因为它不知道appService
。