gpt4 book ai didi

typescript - 引用 Typescript 中的静态类

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

我有以下情况。我希望能够在基类(寄存器)上定义一个静态方法,该方法使用对其他静态属性的引用,这些属性应该被覆盖。例如:

class Base {
constructor() { }
public static name = "Override me please";
public static register = function() { console.log( Base.name ) }
}

class Child extends Base {
constructor() { super() }
public static name = "Child";
}

然后我当然希望 Child.register() 打印出“Child”。是否有可能获得对当前类(class)的引用?我知道我总是可以传递对类的引用,但这似乎不如直接引用类优雅。

感谢任何帮助!谢谢!

最佳答案

这是一个实现您所追求的目标的实现。

class Base {
constructor() { }
public static aname = "Override me please";
public static register = function() { console.log( this.aname ) }
}

class Child extends Base {
constructor() { super() }
public static aname = "ChildName";
}

有两点需要注意。

  1. JavaScript this 绑定(bind)的工作方式。当您调用 Child.register() 时,this 实质上将引用 . 左侧的任何内容。在此“静态”上下文中,this 将引用生成的 JavaScript 中的“构造函数”函数,即 TypeScript 中的“类”。

  2. 因为 this 指的是一个函数(在 JavaScript 中),name 是函数的标准属性,您对该属性的命名可能需要更改(不过,根据 MDN documentation on function.name ,这可能不是标准的)。您拥有 Child.name = "Child" 值的事实可能掩盖了这一点。

关于typescript - 引用 Typescript 中的静态类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24442621/

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