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 能够在特定的区块中保证变量属于某种确定的类型。
      *     可以在此区块中放心的引用此类型的属性,或者调用此类型的方法。
      */
    
  • 相关阅读:
    程序员的7中武器
    需要强化的知识
    微软中国联合小i推出MSN群Beta 不需任何插件
    XML Notepad 2006 v2.0
    Sandcastle August 2006 Community Technology Preview
    [推荐] TechNet 广播 SQL Server 2000完结篇
    《太空帝国 4》(Space Empires IV)以及 xxMod 英文版 中文版 TDM Mod 英文版 中文版
    IronPython 1.0 RC2 更新 1.0.60816
    Microsoft .NET Framework 3.0 RC1
    《Oracle Developer Suite 10g》(Oracle Developer Suite 10g)V10.1.2.0.2
  • 原文地址:https://www.cnblogs.com/chengyunshen/p/12858732.html
Copyright © 2011-2022 走看看