typescript

typescript:

  typescript 是一种给 javascript 添加特性的语言扩展

  1,安装全局 typescript 插件:

    指令:npm i -g typescript

  2,创建 ts 文件

  3,指令:tsc index . ts

    会生成一个跟你 ts 同名的 js 文件

Hbulider 自动编译 ts 文件

  1,安装插件 typescript

    

    

    

  2,下载完成之后重启

  3,工具-选项-应用

    

  4,点击最顶层目录,配置-

   

 typescript 语法:

  1,数据类型

    在 js 中数据类型,决定变量 = 右边的值

    使用 let 声明的变量,在声明变量的时候同时指定变量的类型

    语法:

      let a :数据类型 = ' 赋值 '

         let a :string = ' 123 '

  2,string 

    let b : string = 'hello '

  3,Boolean

    let b : boolean = true

  4,number

    let b : number = 123

  5,数组类型

    在数据类型后面加 [ ] ,代表数组中里面的元素都是该类型

    let aa : number [ ] = [ 1, 2, 3 ]

    第二种方法使用数组泛类型 Array < 数据类型 >

    let b : Array < string > = [ 'tan' , 'ya', 'ning' ]

  6,元祖类型

    当数组中的元素是有限个,我们可以使用元组类型,每个元素的数组类型可以不相同

    let b : [ string, number, boolean ] = [ 'tan', 111, true ]

  7,枚举类型

    枚举类型是 C 语言中的一种基本数据类型

    可列举的元素并且用一些对应编号,一一对应,一般用在存储星期,性别,颜色等

    默认从 0 开始,后面的叠加;

    先定义枚举,才能使用枚举

    enum color { red, blue = 22, plum }

     let c1 : color = color.red  //读取编号

     let c2 : string = color [ 22 ]  //读取元素

    console.log( c1, c2)  // 0 'blue'

  8,任意类型 any

    let b : any = true

  9,空类型 void

    没有类型,往往用于函数返回值

  10,null 和 undefined 类型

  11,never 类型

    主要用在抛出错误上

  12,非原始类型 object

    

  * 函数类型

    function add( x : number, y : number) : number{

      //   x,y:number代表变量的数据类型 

      //   number代表函数返回值的数据类型

      return x+y;

    }

    add(1,2)

  * 匿名函数定义一个函数类型

    let adds = function( x : number , y : number ) : number {

        return  x + y

    }

  命名函数 = 声明式定义

    function fn() { }

  匿名函数

    var fn2 = function () {}  

  参数

    

  没有数据类型

    

  匿名函数的定义

   

  sf 会被后面的函数所约束

  箭头函数前面的是约束

       

  可选参数:

    使用 ? 来实现可选参数的功能,注意,可选参数一定放在最后面

    

  默认参数:

    默认值后面用 = ,给参数赋值

    

    不传值,或者 undefined 的时候都走默认值 ‘hello’

    有值的话就走值

  ...运算符

    

  函数重载:

    在 js 中是不存在函数重载的,但是有函数重写

    函数重载----

      函数名相同,根据参数类型来决定使用哪个参数

      

    函数重写---

      在 js 中,一旦变量名同名,后者会把前者覆盖

      

    定义了两个函数类型,没有实现函数功能

      

    定义类:

      1,ts 定义类,首先如果有属性一定要提前定义属性指定数据类型,不加修饰符默认public

      2,ts 中的类没有原型这个概念

      3,new 实例的时候,就是调用这个构造函数

      4,方法中的 this 指向实例对象

                      

   类的继承:

    extends 和 super 关键字

    多态:对父类的方法重写,并且子类之间的这个方法表现不一致,这叫多态

        或者,父类定义一个方法没有实现,由子类去实现,并且表现不一样,这也叫多态

    类中的修饰符:

       public · 公共的 

        当没有在属性或方法前加修饰符的,默认是public,在任何地方都可以访问

        类里,类外,子类都可以访问

      protected · 受保护的

        类里,子类可以访问,类外面不能访问

      private · 私有的

        类外,子类都不能访问

      static · 静态属性

        类上面的属性就叫静态属性

        访问静态属性:类.属性名

   抽象类 abstract :

    1,作为其他子类的基类 

    2,抽象类不能被实例化

    3,使用 abstract 关键字定义抽象类和抽象方法

    4,抽象类中的抽象方法不包含具体实现,在他的派生类中实现

抽象类就是给子类指定一些约束条件;实现抽象类的子类的时候必须包含抽象类中的所有属性
实现抽象类的子类,使用关键字 extends

    5,派生类必须实现抽象类的抽象方法,普通方法不用重写;子类继承抽象类和类的继承用法一致,唯一的区别就是抽象方法子类必须实现

     

   接口 interface :

    接口 和 抽象类 都是一种对事物的约束

    抽象类只能约束类,接口可以约束的条件就多了

    接口就是制定一种规范,我们如果要实现接口,就得按照这个规则来

    制定属性规范  

      使用关键字 interface 来定义接口

      1,制定属性接口

        可选属性,? 在属性后面直接加? 就可以了

        

      2,实现函数类型接口

        

      3,定义带索引的类型

        

      4,定义对象接口数据类型

        

      5,定义类的类型接口

        ·定义类的接口类,里面的方法不能实现

        ·使用关键字 implements 

        ·在类中实现接口中的方法

         

  接口的继承:

     

 

posted @ 2019-07-16 19:02  黑太阳-  阅读(372)  评论(0编辑  收藏  举报