美文网首页
8.泛型-类

8.泛型-类

作者: 我只会吃饭 | 来源:发表于2020-02-17 10:39 被阅读0次

    泛型类

    例如:number类型,假设定义一个类找出最大元素,并且传入参数及返回的值的类型必须一致

    class MaxClass {
    
        // list:Array<number> = [];
        list:number[] = [];
    
        push(n:number) {
            this.list.push(n);
        }
    
        findMax():number {
            let max = this.list[0];
            for(let it of this.list) {
                if (max <= it) {
                    max = it
                }
            }
            return max;
        }
    }
    
    let m = new MaxClass();
    m.push(1);
    m.push(3);
    console.log(m.findMax());
    

    定义成泛型类: 则可以支持多种类型

    class MaxClass1<T> {
        list:T[] = [];
    
        add(n:T) {
            this.list.push(n);
        }
    
        findMax():T {
            let max = this.list[0];
            for(let it of this.list) {
                if (max <= it) {
                    max = it
                }
            }
            return max;
        } 
    }
    
    let m1 = new MaxClass1<string>();
    m1.add('a');
    m1.add('y');
    console.log(m1.findMax())
    
    let m2 = new MaxClass1<number>();
    m2.add(4);
    m2.add(5);
    console.log(m2.findMax())
    

    使用类约束泛型类的参数

    
    // 泛型类
    // 公交
    class Bus<T> {
        list:Array<T>
        constructor() {
            this.list = [];
        }
    
        up(f:T) {
            this.list.push(f);
        }
    }
    
    // 字符串
    let strBus = new Bus<string>();
    // 数值公交
    let numBus = new Bus<number>();
    
    
    // 我想传给类
    
    // 乘客
    class Fare {
        fname:string|undefined;
    }
    
    let fareBus = new Bus<Fare>();
    
    let fare = new Fare();
    
    
    fare.fname = 'kele'
    
    // 这个乘客公交,只能上Fare的实例
    fareBus.up(fare);
    // fareBus.up('abs'); // 错误
    
    

    相关文章

      网友评论

          本文标题:8.泛型-类

          本文链接:https://www.haomeiwen.com/subject/kddtfhtx.html