Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Typescript 从另一个类的静态方法中的类调用方法。打字稿_Typescript - Fatal编程技术网

Typescript 从另一个类的静态方法中的类调用方法。打字稿

Typescript 从另一个类的静态方法中的类调用方法。打字稿,typescript,Typescript,您好,我正在使用express、Objective和knex开发一个api,遇到以下问题 我试图从另一个类的静态方法中调用一个类中的方法,我不明白为什么我不能这样做。欢迎任何帮助 代码: 提前感谢您的时间。任何类中的静态都意味着它们可以在不启动新对象的情况下使用,因此在静态方法/函数中,您无法访问此(类实例),因为它尚未启动 在javascript的世界中,您可以发现bind、call和apply在这种情况下非常有用。这意味着您必须将静态函数绑定到UserService的实例 如果您使用inve

您好,我正在使用express、Objective和knex开发一个api,遇到以下问题

我试图从另一个类的静态方法中调用一个类中的方法,我不明白为什么我不能这样做。欢迎任何帮助

代码:


提前感谢您的时间。

任何类中的静态都意味着它们可以在不启动新对象的情况下使用,因此在静态方法/函数中,您无法访问此(类实例),因为它尚未启动

在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
    }
}