跳至主要內容

装饰器:重载父类声明

muzzik小于 1 分钟笔记编程语言Typescript装饰器

有时候在开发中,有一个通用的父类方法,但我们又想限制在不同的子类下需要不同的参数类型,为了重新获得语法提示这块糖,重载父类声明就很有必要了。下面实现:

/**重载父类函数声明 */
public reset_parent_declaration(target_a_: any, k_s_: string, descriptor_o_: PropertyDescriptor): void {
    descriptor_o_.value = target_a_.__proto__[k_s_];
}

使用:

class A {
    public func(str_s_: string): void {
         cc.log(str_s_);
    }
}

class B extends A {
    @reset_parent_declaration
    func(str_s_: "test1" | "test2"): void {}
}

let b = new B;
b.func("test1");
// 打印结果:"test1"

另外也可以手动调用 super 函数来实现

📣 觉得很赞?分享给你的朋友吧!