1

我有一个将属性分配给实例的构造函数:

class BaseModel {
    constructor (args = {}) {
        for (let key in args) {
            this[key] = args[key]
        }
    }
}

class User extends BaseModel {
    name: string
}

然后我可以创建一个这样的实例:

let user = new User({name: 'Jon'})

我现在想用类转换器替换这个基本功能:

let user = plainToClass(User, {name: 'Jon'})

我的代码库在很多地方都使用了第一种方法,因此我想在构造函数中实现新方法,这样我就不会破坏旧代码:

 constructor (args = {}) {
        let instance = plainToClass(CLASSTYPE, args)
        for (let key in Object.keys(instance)) {
            this[key] = instance [key]
        }
    }

如何在构造函数中获取类类型?我不能使用 User 因为这是基本模型,其他类也可以从它扩展。

4

1 回答 1

1

我想是new.targetDoc
获取构造函数使用new.target.prototype.constructor,它的属性name- 获取类名。

class BaseModel {
    typeName: string;

    constructor (args = {}) {
        this.typeName = new.taget.constructor.name;
    }
}

class User extends BaseModel {
}

const user = new User();
const typeName = user.typeName; // this would return 'User'
于 2019-03-26T14:00:07.353 回答