zoukankan      html  css  js  c++  java
  • TypeScript 学习四 面向对象的特性,泛型,接口,模块,类型定义文件*.d.ts

    1,面向对象的特性一:类,继承,见上一篇博客;

    2,面向对象的特性二:

    泛型(generic)参数化的类型,一般用来限制集合的内容;指定只能放某个类型的元素

    如下图中的尖括号中的Person,就代表一个泛型,说明workers必须是一个内容必须放的是Person类型数据的数组

    例如:规定了数组workers的内容的类型后,如果声明了其他的内容,就会报错;44,45行是符合内容类型的,第46行就是报错了,

    此处的employee是person的子类,所以是person的类型;

    3,面向对象的特性三:接口  interface

    接口:用来建立某种代码约定,使得其他开发者在调用程序或创建类时必须遵循接口的某种代码约定;

    使用接口有两种典型的使用方式

    1)使用方式一:可以声明方法(可以是构造方法也可是非构造方法)的参数类型:检查传入方法的参数是否满足接口所声明的所有属性;

    例:作为限制传入参数的类型:下图中的public config:IPerson 声明了构造函数的参数config的类型必须是接口的类型IPerson(带name和age的),

    可以看出,对象p1的声明是正确的(因为符合构造函数的类型-接口类型中的name和age两种参数),而对象p2则是由于不符合构造函数的参数类型报错了;如果多传一个属性,或少传一个属性都会报错;

    可选属性:带有可选属性的接口的声明和普通接口的定义差不多,只是在可选属性名字定义的后面加个 ? 符号,

    interface Person{

      name ?: string;

      age ?: number;

    }

    可选属性的好处之一是对可能存在的属性进行预定义;好处之二是可以捕获引用了不存在属性时的错误;

    只读属性:一些对象属性只能在对象刚刚创建的时候修改其值;可以在属性名前用readonly指定;

    interface Person{

       readonly name : string;

         readonly age : number;

    }

    readonly  VS const :

    如果作为属性则使用readonly,如果作为变量则使用const;

    函数类型:接口除了可以描述普通的对象类型,也可以描述函数类型

    interface searchFunc{   //searchFunc是函数名

      (source : string , substring : string):boolean ;  //boolean 是函数(返回值)类型;

    }

    使用这个函数类型的接口:

    let  mysearch : searchFunc;

    mysearch = function(source: string ,substr:string){//对于函数类型的类型检查来说,函数的参数名可以不与接口里定义的完全相同,如  mysearch = function (src : string , sub: string); let result = src.search(sub);

      let result = source.search(substr );

      if(result == -1){

        return false;

       }

      else{

        return true;

      }

    }

    2)使用方式二:用接口来声明方法,并且实现这个接口的类必须实现接口中的方法

     4,面向对象的特性四:模块 Module

    模块:模块可以帮助开发者将代码分割为可重用的单元。开发者可以自己决定将哪些资源(类,方法,变量)暴露出去供外部使用,哪些只在模块内部使用;

    所谓模块就是文件一个模块就是一个文件;并没有特殊的标志来标记什么是模块;

    模块的内部两个关键字来支撑模块的特性:export(导出)和import(导入);

    这两个关键字用来控制模块向外暴露什么及其他模块需要为自己提供什么

    一个模块既可以export暴露它的属性,方法和类,也可以import别人的属性,方法和类;

    带有export关键字的声明,都是可以暴露的(别的文件可以引用的)

    如:

    export var p1;  //声明变量

    export function fuc1(){};  //声明方法

    export class Clazz1{}  //声明类 

    不带export的声明:都是不可暴露的(别的文件不可引用的)

    如:

    var p2;

    function func2(){};

    class Clazz2{} 

    5,面向对象特性5:注解annotation:

    是为程序的元素(类,方法,变量)加上更直观明了的说明;这些说明信息与程序的业务逻辑无关,而是供指定的工具或框架使用的;

    以@开头的是注解的名称:@注解名称({})

    括号里面有的是一些属性,例如:某个类的上面有个注解,则该注解中的属性就是该类加载时需要做的处理(如加载注解注解中的文件等);

    6,面向对象特性6:类型定义文件(*.d.ts)来源是Definitely Typed:

    有时需要在typescript中使用一些框架及其他工具什么的,如jQuery,此时就要用到类型定义文件;

    类型定义文件用来帮助开发者在typescript中使用已有的javascript工具包,如jQuery等;

    每个类型定义文件就是一个typescript模块,用来暴露想要使用的javascript工具包中的工具(直接在typescript中使用javascript工具包的工具会报错,需要类型定义文件来说明该工具的用法即暴露);

    用来安装类型定义文件的工具 typings :  先到gitub.com 上搜索typings工具,了解相关命令,使用npm install typings -global;安装该工具,然后可以使用typings命令搜索,安装框架等工具了;

  • 相关阅读:
    oracle与DB2
    oracle ORA-01427: 单行子查询返回多个行
    mysql开发总结
    mysql show profile基本详解
    mysql批量插入数据
    mysql索引详解
    mysql性能调优
    MySQL优化
    mysql主从调优
    mysql主从复制
  • 原文地址:https://www.cnblogs.com/RitaLee/p/6180659.html
Copyright © 2011-2022 走看看