gpt4 book ai didi

properties - 如何从 typescript 中的静态函数访问非静态属性

转载 作者:搜寻专家 更新时间:2023-10-30 21:04:47 28 4
gpt4 key购买 nike

我正在模拟 User 并且需要实现静态方法 findOne 所以我不需要在我的调用中扩展 User类:

export class User implements IUser {

constructor(public name: string, public password: string) {

this.name = 'n';
this.password = 'p';
}

static findOne(login: any, next:Function) {

if(this.name === login.name) //this points to function not to user

//code

return this; //this points to function not to user
}
}

但我无法从静态函数 findOne 访问 this 有没有办法在 typescript 中完成它?

最佳答案

这是不可能的。您无法从静态方法中获取实例属性,因为只有一个静态对象和未知数量的实例对象。

但是,您可以从实例访问静态成员。这可能对您有用:

export class User {
// 1. create a static property to hold the instances
private static users: User[] = [];

constructor(public name: string, public password: string) {
// 2. store the instances on the static property
User.users.push(this);
}

static findOne(name: string) {
// 3. find the instance with the name you're searching for
let users = this.users.filter(u => u.name === name);
return users.length > 0 ? users[0] : null;
}
}

关于properties - 如何从 typescript 中的静态函数访问非静态属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35353393/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com