最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • TS学习笔记(Six Day)

    正文概述 掘金(coolFish)   2021-01-09   500

    TS学习笔记(泛型和装饰器)

    TS泛型

    • 泛型语言:使用泛型来创建组件可以使一个组件支持多种类型的数据,这样用户可以用自己的数据类型来使用组件
    • 相比使用any,泛型会保留参数类型,泛型有点把数据类型抽出来,动态配置,组件复用的感觉,'< T >'就是插头
    //普通的泛型语法
    function identity <T, U>(value: T, message: U) : T {
      console.log(message);
      let type = typeof value;//boolean
      console.log(type)
      return value;
    }

    console.log(identity<boolean, string>(true, "coolFish"));//coolFish  true
    //编辑器自动选择类型的写法,可以省略调用处的尖括号
    function identity <T, U>(value: T, message: U) : T {
      console.log(message);
      let type = typeof value;//boolean
      console.log(type)
      return value;
    }

    console.log(identity(true, "coolFish"));//coolFish  true

    小结:其中的T是代表类型,还可以使用K,V,E,分别代表键,值,元素类型

    • 泛型接口,泛型类
    interface GenericIdentityFn<T> {
      (arg: T): T;
    }


    class GenericNumber<T> {
      zeroValue: T;
      add: (x: T, y: T) => T;
    }

    let myGenericNumber = new GenericNumber<number>();
    myGenericNumber.zeroValue = 0;
    myGenericNumber.add = function (x, y) {
      return x + y;
    };

    小结:没啥好说的

    • 泛型工具类型:
    • typeof:在TS中,typeof可以用来获取一个变量声明或对象的类型
    interface Person {
      name: string;
      age: number;
    }

    const computer: Person = { name: 'coolFish', age: 24 };
    type coolFish= typeof computer; // -> Person

    function toArray(x: number): Array<number> {
      return [x];
    }

    type Func = typeof toArray; // -> (x: number) => number[]
    console.log()

    小结:使用typeof获取定义的类,然后用类型别名接收,然后就可以用了

    • keyof:可以用于获取某种类型中的所有键,返回类型是联合类型

    • in:用来遍历枚举类型

    type Keys = "a" | "b" | "c"

    type Obj =  {
      [p in Keys]: string
    } // -> { a: string, b: string, c: string }

    小结:有点像for in

    • partial:作用就是将某个类型里的属性全部变成可选项?
    type Partial<T> = {
      [P in keyof T]?: T[P];
    }

    小结:首先通过keyof拿到T的所有属性名,然后in遍历,然后赋值给P,然后p(属性):T[P] (值),中间的?用于将属性变得可选

    装饰器

    #####定义

    • 装饰器是一个表达式
    • 该表达式执行后,返回一个函数
    • 函数的入参分别为target,name和descriptor
    • 函数执行后,可能返回descriptor对象,用于配置target

    起源地下载网 » TS学习笔记(Six Day)

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元