• 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 能够在特定的区块中保证变量属于某种确定的类型。
      *     可以在此区块中放心的引用此类型的属性,或者调用此类型的方法。
      */
    
  • 相关阅读:
    Web---JSP-EL表达式
    JSP---JavaBean的使用-jsp:useBean标签相关
    Web---JSP注册技术的的演绎(3代)-JSP/EJB/Servlet/POJO/JavaBean
    Web---myAjax(自己写底层)-隐藏帧技术
    JSP---JSP中4个容器-pageContext使用
    JSP---演示ErroPage、isErroPage和jsp:forword标签
    JSP-讲解(生成java类、静态导入与动态导入)
    经典算法面试题目-替换字符串的内容(1.5)
    【Android UI】Android Layout XML属性
    【Android UI】:Fragment官方文档
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12858732.html
Copyright © 2020-2023  润新知