zoukankan      html  css  js  c++  java
  • typescript-泛型-类型检查

    /**
     * 泛型: 不预先确定的数据类型,具体的类型在使用的时候才能确定。
     */
    
     function log<T>(value: T):T {
         console.log(value);
         return value
     }
    
    //  调用
    log<string[]>(['a'])
    log<number>(2)
    
    log(['a','b'])
    
    // type Log = <T>(value:T) => T
    // let mylog:Log = log
    
    interface Log <T = string> {
        (value:T):T
    }
    let mylog:Log = log
    mylog('1')
    
    
    // -----泛型约束
    
    class Loger<T>{
        // static name:T ;  // 泛型不能应用于类的静态成员
        run(value: T){
            console.log(value);
            return value;
        }
    }
    
    let logger1 = new Loger<number>();
    logger1.run(1)
    
    let  logger2 = new Loger();
    logger2.run('1') 
    
    
    // -----
    interface Length {
        length:number
    }
    
    function log2<T extends Length>(value:T):T{
        console.log(value,value.length);
        return value
    }
    
    log2([1])
    log2('123')
    log2({length:1})
    
    /**
     * 泛型的好处:
     * 1.函数和类可以轻松的支持多种类型,增强程序的扩展性
     * 2.不必写多条函数重载,冗长的联合类型声明,增强代码可读性
     * 3.灵活控制类型之间的约束
     */
    
     /**
      * 类型检查机制
      * Typescript编译器在做类型检查时,所秉承的一些原则,以及表现出的一些行为。
      * 作用: 辅助开发,提高开发效率。
      * 
      * 1.类型推断
      *   不需要指定变量的类型(函数返回值类型),Typescript可以根据某些规则自动地为其推断出一个类型。
      * 2.类型兼容性
      *   当一个类型Y可以被赋值给另一个类型X时, 类型X兼容类型Y;
      *    X兼容Y :  X(目标类型) = Y(源类型)
      * 
      *   兼容性口诀: 
      *       结构之间兼容:成员少的兼容成员多的
      *       函数之间兼容:参数多的兼容参数少的 
      * 3.类型保护
      * 
      *    typescript 能够在特定的区块中保证变量属于某种确定的类型。
      *     可以在此区块中放心的引用此类型的属性,或者调用此类型的方法。
      */
    
  • 相关阅读:
    day06 tar命令使用,vim简单操作以及linux开机过程
    day05 创建用户过程、文件夹,文件等权限修改等
    简单算法
    day04
    day03
    Vim常用快捷键
    day02
    ssh注解开发
    spring07 JDBC
    spring06Aop
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12858732.html
Copyright © 2011-2022 走看看