Typescript 从另一个类的静态方法中的类调用方法。打字稿
您好,我正在使用express、Objective和knex开发一个api,遇到以下问题 我试图从另一个类的静态方法中调用一个类中的方法,我不明白为什么我不能这样做。欢迎任何帮助 代码:Typescript 从另一个类的静态方法中的类调用方法。打字稿,typescript,Typescript,您好,我正在使用express、Objective和knex开发一个api,遇到以下问题 我试图从另一个类的静态方法中调用一个类中的方法,我不明白为什么我不能这样做。欢迎任何帮助 代码: 提前感谢您的时间。任何类中的静态都意味着它们可以在不启动新对象的情况下使用,因此在静态方法/函数中,您无法访问此(类实例),因为它尚未启动 在javascript的世界中,您可以发现bind、call和apply在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService的实例 如果您使用inve
提前感谢您的时间。任何类中的静态都意味着它们可以在不启动新对象的情况下使用,因此在静态方法/函数中,您无法访问此(类实例),因为它尚未启动 在javascript的世界中,您可以发现
bind
、call
和apply
在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService
的实例
如果您使用inversifiy之类的工具来控制注入,您可以使用它的
lazyInject
utils来实现此功能。任何类中的静态都意味着它们可以在不启动新对象的情况下使用,因此在静态方法/函数中,您无法访问此
(类的实例)因为它还没有启动
在javascript的世界中,您可以发现bind
、call
和apply
在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService
的实例
如果您使用inversifiy之类的工具来控制注入,您可以使用它的
lazyInject
utils来实现此功能。您不能从静态上下文中访问实例属性(任何必须使用this
限定的内容),但另一种方法也可以。要么删除static关键字,要么将您试图访问的对象设置为static,再加上@Teedeez所说的内容,原因是类方法中的this
不是实例的this
。ES6类拥有原型。因为在静态方法/函数中,由于尚未启动,您无法访问该类(类的实例)。在javascript的世界中,您可以发现bind
、call
和apply
在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService的实例。如果您使用inversifiy之类的工具,您可以使用它的lazyInject
utils来实现此功能。您不能从静态上下文中访问实例属性(任何必须使用this
限定的内容),但另一种方法也可以。要么删除static关键字,要么将您试图访问的对象设置为static,再加上@Teedeez所说的内容,原因是类方法中的this
不是实例的this
。ES6类拥有原型。因为在静态方法/函数中,由于尚未启动,您无法访问该类(类的实例)。在javascript的世界中,您可以发现bind
、call
和apply
在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService的实例。如果您使用inversifiy之类的工具,您可以使用其lazyInject
utils来实现此功能
class UserService {
public async getUserByEmail(email: string) {
//fun stuff
}
}
class AuthController {
public userService: UserService;
constructor(_userService: UserService) {
this.userService = _userService;
}
static async login(req: Request, res: Response) {
//Here i CANT call this.userService.getUserByEmail()
}
async register(req: Request, res: Response) {
this.userService.getUserByEmail();
//Here i CAN call the method from userService
}
}