首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在打字稿中建立通用接口

在打字稿中建立通用接口
EN

Stack Overflow用户
提问于 2017-06-07 09:24:39
回答 1查看 3.5K关注 0票数 1

在abc的下一行中的泛型部分,它在<>中。

实际上,我是从Javascript边到类型记录方的角度2。

这就是为什么我在Javascript中没有看到这些通用的部分。

代码语言:javascript
复制
export interface Animals<abc>

export class WaterAnimal <abc> implements Animals<abc> { }

我得到的东西:

  1. 泛型部件有助于维护我们正在发送的类型,并且从任何函数获得的类型都是相同的类型,类型可以是任何对象、字符串、数字或数组。

例:-

代码语言:javascript
复制
function identity<T>(arg: T): T {
    return arg;
}

我想问的是:-

  1. 当我们进入类和接口时:-通过传递接口中的参数,比如在动物接口中,它的目的是什么。
  2. 如果有什么我还不知道的用途,现在如果我们实现动物接口到WaterAnimal类,那么我想编写动物接口的<abc>前端,因为在定义该接口时,我已经将该接口作为参数传递给了.So,为什么编译器强迫我用WaterAnimalE 221类..Is来定义<abc>,这背后有任何原因。

任何帮助都将不胜感激。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-06-07 10:55:22

泛型的一个很好的例子存在于语言本身。

大多数语言在非类型化的列表上都有表单,比如JavaScript数组:

代码语言:javascript
复制
var arr = [
    1,
    "str",
    new Customer()
];

但是一个更有用的对象是一个只包含一种类型的数组,因为这样您就可以迭代数组,知道所有事情都是一样的:

代码语言:javascript
复制
var arr: NumberArray = [
    1,
    3,
    5
];

但是我们需要为每种数组创建一个新的类型,这样我们就可以得到NumberArrayStringArrayCustomerArray.诸若此类。

因此,我们没有创建几乎无限数量的类型,而是创建了一个泛型类型。然后,我们指定我们打算使用的类型:

代码语言:javascript
复制
var arr: Array<number>= [
    1,
    3,
    5
];

类型参数(number)允许我们重用数组类或接口,而不是创建新的类型。条件是,若不指定类型约束,Array就无法知道有关此类型的任何信息。

为了了解如何在泛型类中使用这个方法,下面是一个简单的假示例:

代码语言:javascript
复制
class ArrayOfOne<T> {
    private item: T;

    add(item: T) {
        this.item = item;
    }

    retrieve() : T {
        return this.item;
    }
}

在本例中,ArrayOfOne类不需要知道T是什么,但是如果使用它,T将是强类型的。

代码语言:javascript
复制
var arr = new ArrayOfOne<string>();
arr.add("str"); // ok
arr.add(1); //not ok

var str: string = arr.retrieve(); // ok
var num: number = arr.retrieve(); // not ok
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/44408633

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档