首页 > 其他分享 >TypeScript泛型

TypeScript泛型

时间:2022-11-27 14:56:37浏览次数:33  
标签:function TypeScript return name 示例 泛型 fn

泛型(Generic)

定义一个函数或类时,有些情况下无法确定其中要使用的具体类型(返回值、参数、属性的类型不能确定),此时泛型便能够发挥作用。

示例:

/*
*   在定义函数或是类时,如果遇到类型不明确就可以使用泛型
*
* */

function fn<T>(a: T): T{
    return a;
}

// 可以直接调用具有泛型的函数
let result = fn(10); // 不指定泛型,TS可以自动对类型进行推断
let result2 = fn<string>('hello'); // 指定泛型
 泛型可以同时指定多个

示例:

function fn2<T, K>(a: T, b: K):T{
    console.log(b);
    return a;
}
fn2<number, string>(123, 'hello');

类中同样可以使用泛型

示例:

class MyClass<T>{
    name: T;
    constructor(name: T) {
        this.name = name;
    }
}

const mc = new MyClass<string>('孙悟空');

对泛型的范围进行约束

// T extends Inter 表示泛型T必须时Inter实现类(子类)
function fn3<T extends Inter>(a: T): number{
    return a.length;
}

 

标签:function,TypeScript,return,name,示例,泛型,fn
From: https://www.cnblogs.com/anjingdian/p/16929672.html

相关文章

  • TypeScript属性的封装
    封装对象实质上就是属性和方法的容器,它的主要作用就是存储属性和方法,这就是所谓的封装默认情况下,对象的属性是可以任意的修改的,为了确保数据的安全性,在TS中可以对属......
  • TypeScript接口
    接口(Interface)接口的作用类似于抽象类,不同点在于接口中的所有方法和属性都是没有实值的,换句话说接口中的所有方法都是抽象方法。接口主要负责定义一个类的结构,接口可以去......
  • TypeScript抽象类
    抽象类(abstractclass)抽象类是专门用来被其他类所继承的类,它只能被其他类所继承不能用来创建实例使用abstract开头的方法叫做抽象方法,抽象方法没有方法体只能定义......
  • where 泛型类型约束 default 关键字
    首先我们来看一下泛型的基本概念:     最显著的一点就是它参数化了类型,把类型作为参数抽象出来,从而使我们在实际的运用当中能够更好的实现代码的重复利用,同时它提......
  • TypeScript之super
     示例ts文件:(function(){classAnimal{name:string;constructor(name:string){this.name=name;}sa......
  • TypeScript继承
    继承  * -使用继承后,子类将会拥有父类所有的方法和属性  * -通过继承可以将多个类中共有的代码写在一个父类中,  *   这样只需要写一次即可......
  • TypeScript 高级类型
    TypeScript高级类型class类类型兼容性交叉类型泛型和keyof索引签名类型和索引查询类型映射类型class类classPerson{  age:number//......
  • TypeScript之构造函数和this
     示例:classDog{name:string;age:number;//constructor被称为构造函数//构造函数会在对象创建时调用constructor(name:string,age:......
  • TypeScript之类
    TypeScript中的类的定义与使用示例//使用class关键字来定义一个类/**对象中主要包含了两个部分:*属性*方法**/classPerson{/**......
  • TypeScript/Javascript 泛型字典
    typescript是javaScript的超集,相当于把弱类型的js变成了强类型的语言,并且实现了封装(成员私有),更方便面向对象编程。然鹅,typescript并没有扩增原生JS的内容,比如:支持了import......