如何使用 get 属性扩展打字稿类?

2024-04-04

我得到一个具有 say 类型的对象的实例A。如何在 Typescript 中使用 getter 函数来扩展它?添加我做的功能

A.prototype.testFunction = function () {
  if(this.something) {
    return this.something;
  }
 return null;
}

我将类型扩展为index.d.ts文件如:

interface A {
    testFunction (): SomeType|null;
}

但是,如果我想显示为 getter 函数,而不仅仅是函数,我该如何添加它呢?

我试着看看Object.defineProperty()但 Typescript 本身似乎并不太乐意使用这个,指的是错误的实例this在下面的代码中:

Object.defineProperty(A.prototype, "testGet", {
    get: function () {
        if(this.something) { // <== this appears to not refer to type A
          return this.something;
        }
        return null;
    },
    enumerable: false,
    configurable: true
}); 

getter/setter 可以简单地声明为接口中的属性:

interface A {
    testGet: SomeType|null;
}

并指定type of this范围 https://www.typescriptlang.org/docs/handbook/functions.html#this-parametersgetter 函数内部:

Object.defineProperty(A.prototype, "testGet", {
    get (this: A) {
        if(this.something) { 
          return this.something;
        }
        return null;
    },
    enumerable: false,
    configurable: true
}); 
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 get 属性扩展打字稿类? 的相关文章

随机推荐

  • Visual Studio 远程调试扩展性

    我正在尝试使用类似于以下的代码连接到远程计算机 Debugger2 db Debugger2 dte Debugger Transport trans db Transports Item Default Process2 proc2 Pr
  • 如何从源代码构建适用于 iOS 的 libssl.a?

    I have a project referenced to libSSL a in xcode 5 so I try to build it myself error message of make command is this 我做了
  • 如何将容器 div 及其所有内容缩放到特定大小?

    我创建了一个 100 浏览器 宽度的 HTML 页面 其中包含很多内容 内容在页面中是固定的 其大小均以像素和百分比为单位 现在我需要添加20 浏览器宽度的广告面板 并且想要将页面容器及其所有内容 包括文本 缩放至 80 就像所有网络浏览器
  • 在 Fluent NHibernate 中使用鉴别器

    我正在尝试创建一个鉴别器列 该列将保存许多可用状态之一 就像我的代码将显示的那样 每个状态都有一个名称和背景颜色 每个状态共享相同的基类 这是我的代码 public class Item public virtual int Id get
  • Oracle SQL 中时间戳转换为 EPOCH 时间

    我在表 22 03 2022 06 59 59 中输入日期作为列 我需要转换成 EPOCH 时间 预期输出 1647932399 时区 印度尼西亚雅加达 参考链接 https www epochconverter com https www
  • ElasticBeanstalk - 应用程序更改未显示

    我正在使用 Elasticbeanstalk 在 AWS 上托管一个应用程序 我正在使用工具带从本地计算机推送我的应用程序 直到几周前 一切都工作正常 但最近我的更改没有生效 我可以在 aws 管理控制台中看到我的应用程序正在推送和部署 但
  • bash 从这里运行脚本 doc [重复]

    这个问题在这里已经有答案了 在下面的代码中 变量X正常输出 cat a sh X world echo hello X cat a sh bash hello world 但是 使用here doc 变量X不会显示 cat lt
  • 列出稀疏文件中的所有空洞和数据段

    我正在尝试实现一个程序 它可以使用以下命令打印常规稀疏文件中的所有孔和数据段lseek 2 及其论点SEEK DATA and SEEK HOLE 类似于 list hold and data segs sparse file This f
  • Grails: .save(flush:flush, insert:true) 与 .save(flush:true) 有何不同

    在spring security生成的类中UserRole or SecUserSecRole 你可以随意称呼它 有一个命令可以创建一个new UserRole 并保存它 save flush flush insert true 这意味着什
  • SQL Server - 尝试对我的表进行非规范化

    对标题表示歉意 但我正在尝试做超出我水平的事情 甚至让我来解释它 假设我有一个包含变量 person foods 和 amount 的表 Person food Amount Mike Butter 3 Mike Milk 4 Mike C
  • Excel VBA 如果 cell.Value =... 那么

    我有这段运行良好的代码 Sub colortest Dim cell As Range For Each cell In Range Range1 If cell Value Word1 Then cell Interior Color X
  • “左连接”与“左外连接”

    我知道实际上没有区别 但是 LEFT JOIN 是 ANSI 形式吗 或者是否有任何 RDBMS 会失败 LEFT JOIN 并需要 LEFT OUTER JOIN 我在这里询问 这样我就可以节省几次点击 填写表格等操作 以获得正确的 AN
  • UICollectionViewCell 中的 UICollectionView

    我有兴趣将集合视图作为集合视图单元的一部分 但由于某种原因无法弄清楚这是如何完成的 我将在哪里实现单元格集合视图的必要方法 There s Ash Furrow 写的一篇文章 http ashfurrow com blog putting
  • 根据索引从 Python 数据帧中获取平均值

    我有一个数据框 它是来自groupbycall test uniqueStudents groupby index1 index2 count test head 10 我希望获得一个聚合 在其中找到索引 1 中计数输出的平均值 结果和期望
  • 如何防止 Flutter 中不必要的渲染?

    下面是一个最小的应用程序 展示了我的担忧 如果运行它 您将看到每个可见项的构建方法都会运行 即使只有一项的数据发生了更改 import package flutter foundation dart import package flutt
  • XML+XSL 表示应该使用什么内容类型?

    我正在尝试在浏览器中呈现 XML XSL 2 0 返回 xml页面与application xml内容类型和 xsl页面与text xml Safari 抱怨主文档 资源解释为文档 但使用 MIME 类型 application xml 传
  • Python ImportError:Google 应用程序引擎项目中没有名为 main 的模块

    我有以下 app yaml 文件 application gtryapp version 1 runtime python27 api version 1 threadsafe yes handlers url images gif png
  • AJAX 分页后 JQuery 不工作

    我有一个 JQuery 函数 脚本 用于博客上的帖子 将鼠标悬停在帖子图像上会显示帖子标题 摘录和链接 此外 我正在运行一个 AJAX 淡出 淡入分页脚本 当我转到分页中的下一组帖子时 第一个 JQuery 脚本不再运行 我知道我需要以某种
  • 使用 es6 类时,React 中的“super()”和“super(props)”有什么区别?

    什么时候通过很重要props to super 为什么 class MyComponent extends React Component constructor props super or super props 当一个人需要通过时只有
  • 如何使用 get 属性扩展打字稿类?

    我得到一个具有 say 类型的对象的实例A 如何在 Typescript 中使用 getter 函数来扩展它 添加我做的功能 A prototype testFunction function if this something retur