gpt4 book ai didi

javascript - 如何使用泛型在 TypeScript 中模拟 Java getClass()?

转载 作者:行者123 更新时间:2023-12-02 09:56:33 25 4
gpt4 key购买 nike

我需要模拟Java Object#getClass() TypeScript 中具有泛型的方法。

这是我的类(class):

class Class<T> {

public getName(): string {
return ...;
}
}

我需要添加到每个对象 getClass(): Class<CLASS_NAME>方法。所以我这样做:

declare global {

interface Object {

getClass(): Class<???>; //LINE X
}
}

但是,我不明白我应该在 LINE X 上使用什么泛型。有人可以帮助我吗?

最佳答案

就类型而言,这应该有效,并且 Class 的泛型类型将获取调用它的对象的类型:

class Class<T> {
public constructor(private target: object) {}
public getName(): string {
return this.target.constructor.name;
}
}

declare global {
interface Object {
getClass<T extends object>(this:T): Class<T>;
}
}

Object.prototype.getClass = function (this: object){
return new Class(this);
}
class A {

}

console.log(new A().getClass().getName()) // A

注意:请不要尝试在 Typescript 中模拟 Java,这通常会导致灾难。虽然在 Typescript 中可能存在这种结构,但感觉很陌生(向对象添加功能,对于初学者来说通常不是一个好主意)。如果您有具体的用例,请发布,我们可能会找到更好的解决方案。

关于javascript - 如何使用泛型在 TypeScript 中模拟 Java getClass()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55971800/

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