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 能够在特定的区块中保证变量属于某种确定的类型。
      *     可以在此区块中放心的引用此类型的属性,或者调用此类型的方法。
      */
    
  • 相关阅读:
    LintCode "Maximum Gap"
    LintCode "Wood Cut"
    LintCode "Expression Evaluation"
    LintCode "Find Peak Element II"
    LintCode "Remove Node in Binary Search Tree"
    LintCode "Delete Digits"
    LintCode "Binary Representation"
    LeetCode "Game of Life"
    LintCode "Coins in a Line"
    LintCode "Word Break"
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12858732.html
Copyright © 2011-2022 走看看