用泛型 T 扩展类

2024-04-20

在 TypeScript 中,有没有办法用泛型类型扩展类?请参阅我的“假设场景”示例,其中我希望我的类具有名为“品种”(或其他)的属性:

interface dog {
  breed: string;
}

export class animal<T> extends T {
  legs: number;
}

export class main {
  private mydog: animal = new animal<dog>();

  constructor() {
    this.mydog.legs = 4;
    this.mydog.breed = "husky"; //<-- not conventionally possible, but basically want to acheive this
  }
}

你不能,因为类是在编译时定义的,并且当animal类已编译T尚不清楚。

但是,您可以定义类型的属性T inside animal.

interface dog {

  breed: string;

}

export class animal < T > {
  actual: T;
  legs: number;
}

export class main {

  private mydog: animal < dog > = new animal < dog > ();

  constructor() {

    this.mydog.legs = 4;
    this.mydog.actual.breed = "husky"; // this will fail because actual is undefined (you must set it too)
  }

}

我想这取决于为什么你需要动物类是通用的,但你也可以只让狗扩展动物。

export class animal {
  legs: number;
}

class dog extends animal {
  breed: string;
}

export class main {

  private mydog: dog = new dog();

  constructor() {

    this.mydog.legs = 4;
    this.mydog.breed = "husky";
  }

}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用泛型 T 扩展类 的相关文章

随机推荐

  • 回形针是否需要全部 4 列(_file_name、_content_type 等)?

    我想知道 Paperclip 是否需要数据库中的所有四列 add column users avatar file name string add column users avatar content type string add co
  • 如何更改 VS Code 远程容器中的默认卷挂载?

    如何更改容器中打开的文件夹的默认卷装载 我已经尝试过在我的Dockerfile RUN mkdir root myproject WORKDIR root myproject 以及我的 devcontainer json name My P
  • 当 defer func 评估其参数时

    我正在学习 defer 在 golang 中的行为方式 并想用它来处理函数返回时的错误 代码如下 package main import fmt import errors func main a func a var err error
  • Core Plot 1.0如何实现reloadData方法?

    我昨天问了这个问题 并得到了 Eric Skroch 的大力帮助 然而 在查看了 Core Plot 网站上的所有文档以及一些示例后 我仍然有点困惑 因此 我将发布迄今为止的代码 看看是否有人可以帮助我更多 也许埃里克也能更容易提供帮助 我
  • 如果缺少列值,则替换为 pandas 数据框中的增量值

    输入数据框 max value 16 x max max value data s id G1 G2 G3 G3 G4 df2 pd DataFrame from dict data df2 Out 365 s id 0 G1 1 2 3
  • 流行图片,例如 Google 图片

    有没有任何 jQuery 插件或 CSS 技术可以实现像谷歌图像那样的流行效果 Thanks images padding 30px images img position relative float left height 100px
  • Redux 不就是美化了全局状态吗?

    所以我一周前开始学习 React 我不可避免地遇到了状态问题以及组件应该如何与应用程序的其余部分进行通信 我四处搜寻了一下 Redux 似乎是这个月的热门 我通读了所有文档 我认为这实际上是一个相当革命性的想法 以下是我的想法 人们普遍认为
  • 在 C# webBrowser 控件中调用 Javascript 函数

    我正在使用网页浏览器C 中的控件加载网页 需要调用返回字符串值的 JavaScript 函数 我有一个解决方案可以使用调用脚本方法 我也尝试了很多 但都失败了 你能具体说明什么失败了吗 我的下面的示例由一个带有 Web 浏览器和按钮的表单组
  • 为什么 `List` 有 `forEach` 却没有 `map` 默认方法?

    我研究过在 Java 8 中编写基于流的代码 并注意到一种模式 即我经常有一个列表 但需要通过对每个元素应用简单的映射来将其转换为另一个列表 写完后 stream map collect Collections toList 还有一次我记得
  • 如何使用 FakeItEasy 伪造一个动作<>

    我正在使用 FakeItEasy 库为我的单元测试创 建假货 我有一个ClassUnderTest我想测试该方法MethodToTest Data dataObject 这个方法正在调用我想伪造的接口的方法 public interface
  • css设置speak:none现在相当于aria-hidden =“true”吗?

    我只是想知道我是否应该期望 2015 年 1 月左右的浏览器和辅助技术以相当于设置 aria hidden true 的方式使用spoke none 我想指出一些半不透明的文本应该被忽略 并且想知道我是否可以在一次操作中完成它 只需添加一个
  • WinRT StorageFile DisplayName 奇怪的行为

    在 Windows 8 1 上的 Windows 8 应用程序中 我使用 StorageFile 的 DisplayName 属性来获取 友好 文件名 在大多数情况下 结果是文件的名称without扩展名 但有时结果是文件名with扩展名
  • GAE Golang Gorilla mux - 404 页面未找到

    我在 GAE 中使用 gorilla mux 时遇到一些问题 当我尝试时 我发现 404 页面未找到 未调用 rootHandler 函数 未生成任何痕迹 以下是我的代码的一部分 有什么想法吗 提前考虑 func init r mux Ne
  • 动态改变背景LinearLayout

    如何动态改变LinearLayout的背景 您是否尝试过其中之一 yourLayout setBackgroundColor int color yourLayout setBackgroundDrawable Drawable d you
  • 如何使用 Python 访问 Outlook 收件箱中的子文件夹

    我在 Outlook 中创建了一条规则 将来自特定发件人的所有传入邮件移至收件箱中的子文件夹 Like Inbox Subfolder 我写了一段代码 import win32com client outlook win32com clie
  • git - 有日志提交但缺少 .sln 文件,因此无法打开项目 - 如何恢复

    有什么方法可以使用 git 恢复我的项目文件吗 这是场景 我在一个分支机构工作了几天 该分支从未被推送到远程仓库 所以它完全是本地的 我最终丢失了 sln 解决方案文件 因此我无法再打开该项目 但在项目目录中我仍然有 git 目录 如果我发
  • ARView 黑屏

    我正在尝试以编程方式实例化 ARView 这是我的视图控制器代码 import Foundation import UIKit import RealityKit class ARViewController UIViewControlle
  • XPath 轴是否尊重 Xslt 排序?

    如果我像这样调用 xslt 模板
  • 如何在 Windows 上更改 npm 的缓存路径(或完全禁用缓存)?

    我已经在我的 Windows 7 x64 开发机器上安装了 Node js 手动方式 mkdir C Devel nodejs cd C Devel nodejs set NODE PATH CD setx M PATH PATH NODE
  • 用泛型 T 扩展类

    在 TypeScript 中 有没有办法用泛型类型扩展类 请参阅我的 假设场景 示例 其中我希望我的类具有名为 品种 或其他 的属性 interface dog breed string export class animal