zoukankan      html  css  js  c++  java
  • TypeScript 之 泛型

    function identity<T>(arg: T): T {
        return arg;
    }
    

    我们给identity添加了类型变量T。 T帮助我们捕获用户传入的类型(比如:number),之后我们就可以使用这个类型。 之后我们再次使用了T当做返回值类型。现在我们可以知道参数类型与返回值类型是相同的了。 这允许我们跟踪函数里使用的类型的信息。

    • 泛型函数的使用
      泛型函数定义后,可以用两种方法使用。
    1. 第一种是,传入所有的参数,包含类型参数:
    let output = identity<string>("myString");  // type of output will be 'string'
    

    这里我们明确的指定了T是字符串类型,并做为一个参数传给函数,使用了<>括起来而不是()。
    2. 第二种方法更普遍。利用了类型推论,编译器会根据传入的参数自动地帮助我们确定T的类型:

    let output = identity("myString");  // type of output will be 'string'
    
    • 注意:无法创建泛型枚举和泛型命名空间。

    • 类的静态属性不能使用泛型类型。

    • 泛型约束
      定义一个接口来描述约束条件。 创建一个包含.length属性的接口,使用这个接口和extends关键字还实现约束:

    interface Lengthwise {
        length: number;
    }
    
    function loggingIdentity<T extends Lengthwise>(arg: T): T {
        console.log(arg.length);  // Now we know it has a .length property, so no more error
        return arg;
    }
    

    现在这个泛型函数被定义了约束,因此它不再是适用于任意类型:

    loggingIdentity(3);  // Error, number doesn't have a .length property
    

    我们需要传入符合约束类型的值,必须包含必须的属性:

    loggingIdentity({length: 10, value: 3});
    
  • 相关阅读:
    网页布局——table布局
    Flex 布局——语法属性详解
    CSS实现垂直居中的几种方法
    svn:冲突(<<<<<<.mine ==== >>>>>>.xxxx)
    mysql:4种时间类型
    js:"use strict"; 严格模式
    js函数的Json写法
    spring 官方文档
    mybatis技术文章
    java:可变参数(转载)
  • 原文地址:https://www.cnblogs.com/cag2050/p/9553999.html
Copyright © 2011-2022 走看看