Typescript 中的泛型类型返回

2024-01-31

我有一个 Interface find ,其中包含方法 cal(); 类a1和a2实现了该接口。 a1 返回数字,a2 返回字符串。我如何定义一个接口来解决我的问题。

下面是所提到内容的片段。

interface Ifind {
    cal() : string;
}

class a1 implements Ifind{

    public cal():string{
        return "10";
    }
}

class a2 implements Ifind{
    public cal(): number{
        return 12;
    }
}

class main{
    private obj;

    constructor() {
        this.obj = new a1();
        var p = this.obj.cal();
        alert(p)
    }
}

在 TypeScript Playground 中 http://www.typescriptlang.org/play/#src=interface%20Ifind%20%7B%0D%0A%20%20%20%20cal()%20%3A%20string%3B%0D%0A%7D%0D%0A%0D%0Aclass%20a1%20implements%20Ifind%7B%0D%0A%20%20%20%0D%0A%20%20%20%20public%20cal()%3Astring%7B%0D%0A%20%20%20%20%20%20%20%20return%20%2210%22%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20a2%20implements%20Ifind%7B%0D%0A%20%20%20%20public%20cal()%3A%20number%7B%0D%0A%20%20%20%20%20%20%20%20return%2012%3B%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20main%7B%0D%0A%20%20%20%20private%20obj%3B%0D%0A%0D%0A%20%20%20%20constructor()%20%7B%0D%0A%20%20%20%20%20%20%20%20this.obj%20%3D%20new%20a1()%3B%0D%0A%20%20%20%20%20%20%20%20var%20p%20%3D%20this.obj.cal()%3B%0D%0A%20%20%20%20%20%20%20%20alert(p)%0D%0A%20%20%20%20%7D%0D%0A%7D


您可以使界面通用。

// Edited for naming   
interface Find<T> {
    cal() : T;
}

class A1 implements Find<string> {
    cal(): string {
        return "10";
    }
}

class A2 implements Find<number> {
    cal(): number {
        return 12;
    }
}

对上面代码的一些评论。

TypeScript 作为 JavaScript 的超集,拥有一流的函数,这使得上面的代码变得非常丑陋和不惯用。

直接写一个函数会好很多。

function a1() {
  return "10";
}

function a2() {
  return 12;
}

当然,您的实际代码可能会更复杂,但如果您的接口只有一个成员,并且该成员是一个函数,则只需使用函数即可。

我还编辑了样式代码。具体来说,类型和类名称都应该是帕斯卡卡塞德.

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

Typescript 中的泛型类型返回 的相关文章

随机推荐

  • 隐藏微调器中的第一个项目

    我在微调器上工作 微调器中有 5 个项目 我只想隐藏微调器中的第一个项目 不是删除 只是隐藏 问题是 当我单击微调器时 没有选择 api 获取的项目通过使用第一个 item id 我刚刚在微调器的第一个位置 0 处添加了空白字段 它工作正常
  • 如何在 PHP 中将“一周的第一天”设置为星期四

    我想将一周的第一天设置为星期四 而不是星期日或星期一 因为这是公司的截止日期 我已经有一个代码来确定日期的当前周数 但它从星期日或星期一开始 如何根据我的喜好修改这些 function findweek date monthstart da
  • 使用 Jasmine 监视可观察订阅的结果

    我正在 Jasmine 单元测试一个使用 Observables 的角度组件 我的组件有我正在测试的生命周期挂钩 ngOnInit this dataService getCellOEE this cell subscribe value
  • 如何在 Jest 单元测试中查看渲染的 React 组件是什么样子?

    我正在尝试对 React 组件进行测试 我需要检查渲染后的样子 尝试使用ReactDOMServer renderToString 但它失败了 这是代码 import NewRec from src components edit impo
  • sqlSave 错误

    我正在与sqlSave添加我的矩阵B看起来像这样 Noinscr 88877799 45645687 23523521 45454545 到 SQL 表 所以我运行以下命令 sqlSave channel b testsFelix dbo
  • C++ Windows 异步 IO 命名管道未收到第一条消息

    修改后的代码来自 使用重叠 I O 的命名管道服务器https msdn microsoft com en us library windows desktop aa365603 v vs 85 aspx https msdn micros
  • Swift 3:使用 NSCoder 解码值的安全方法?

    在 Swift 3 之前 您可以使用 NSCoder 解码布尔值 如下所示 if let value aDecoder decodeObjectForKey TestKey as Bool test value Swift 3 中建议的方法
  • 多个定义和仅标头库

    我有一个带有几个 c 和 h 文件的 C 程序 我决定将程序的一部分设为 仅标头 因此我将代码从 c 移至 h 现在我遇到了多重定义问题 但我不知道为什么 例如 main c includes utils h vector c includ
  • iOS 13 中的 viewDidAppear 问题

    我刚刚开始使用 iOS 13 进行编码 并且遇到了视图控制器功能的问题 在 iOS 13 之前 我有一个使用此函数呈现的视图控制器 func presentDetail viewControllerToPresent UIViewContr
  • 为什么magento不自动加载父类

    我有一个模块 它将使用我的控制器而不是magento的控制器
  • 日期/时间点/间隔的(关系)数据库性能

    我正在使用 Access SQL 做一个项目 并且进展顺利 我学到了很多关于 Access 和 VBA 的知识 这个网站在这个过程中给了我很大的帮助 现在我面临着一个性能问题 由于我在这种 SQL 工作方面经验很少 所以我来这里是为了一些想
  • 奇怪的乘法结果

    在我的代码中 我在 C 代码中进行了乘法运算 所有变量类型均为 double f1 0 f1 rot 0 xu 0 f1 rot 1 yu 0 f1 1 f1 rot 0 xu 1 f1 rot 1 yu 1 f1 2 f1 rot 0 x
  • C# 表单激活和停用事件

    我有两个表单 主表单和子表单 当 mainForm 失去焦点时 我希望 subForm 消失 然后在 mainForm 重新获得焦点时重新出现 我在 mainForm 上使用 Activated 和 Deactivate 事件来跟踪 mai
  • h2内存表,远程连接

    我在创建内存表 使用 H2 数据库以及在创建和运行该表的 JVM 之外访问它时遇到问题 该文档将 url 构造为jdbc h2 tcp
  • 子模块中的 RouteReuseStrategy

    这是我的延迟加载子模块 NgModule imports CommonModule RouterModule forChild acnpRoutes declarations providers provide RouteReuseStra
  • 使用引号作为键的 Bash hashmap

    在 Bash 中 我想取消设置哈希映射的条目 但我失败了 代码如下 declare A arr arr a b 3 echo arr output a b key a b unset arr key error bash unset arr
  • 存储过程中的返回计数

    我编写了一个存储过程来返回计数 但我得到了一个空值 谁能告诉我我的存储过程中的问题出在哪里 set ANSI NULLS ON set QUOTED IDENTIFIER ON go ALTER PROCEDURE dbo Validate
  • 如何在没有安装服务器的情况下设置 MySQL Workbench 的客户端配置?

    假设我在没有服务器的 Windows 7 上安装了 MySQL Workbench 并且正在连接到远程服务器 如何为工作台设置客户端配置 如 my ini 中的 client 部分 或者也许我以错误的方式获取它并且客户端从它连接到的服务器加
  • Java - Spring Ws - 在 XSD 文件中加载相对包含 (Tomcat 8)

    我创建了一个 Spring Web 服务 它使用以下代码从 XSD 文件集合创建动态 WSDL Resource schema new ClassPathResource schema service XCPD SupportMateria
  • Typescript 中的泛型类型返回

    我有一个 Interface find 其中包含方法 cal 类a1和a2实现了该接口 a1 返回数字 a2 返回字符串 我如何定义一个接口来解决我的问题 下面是所提到内容的片段 interface Ifind cal string cla