Typescript01

认识Typescript

- js超集
- 静态类型语言:编译阶段检查语法
- 支持ES6-ES10甚至ESNext语法
- 兼容各种浏览器服务器,完全开源
优点: 程序更易理解,效率更高,更少错误,

一、数据类型

简单类型

   1. js基本类型 :"string, number, boolean, undefined, null, bigint, symbol
      > undefined和null是所有类型的子类型
   2. 任何类型 :"any 
      联合类型 :a|b 

复杂类型

    1. object类型
    2. 数组类型 :arr[] 元素类型一致
       元组类型 :[string, number] 

二、接口Interface-> 描述某种类型

```
   1. 描述对象类型
   interface Obj{
      readonly id: number;  //只读属性,不允许二次修改(放前面
      name: string;
      age: number;  
      gender ?: string  //?:可选属性(放最后
  }
  let person:Obj = {
      id:1,
      name: "xiaoli",
      age: 21
  }

    2. 描述类
    interface A{
      fn1();
    }
    class AA implements A{
      fn1(){ "具体实现"};  
    }
```

枚举

  • 常量值-可进行常量枚举
const enum Direction{
        Up = "UP",
        Down = "DOWN"
      }
  • 计算值-

类型别名

  type typename = string|number;

  function(a: typename):number{  }

类型断言

获取联合属性|共有属性之外的独有属性
 a: string|number
 const b = a as String
 console.log(b.length)

 快捷写法
  a: string|number
  (<string>a).length

三、泛型Generics⭐

先占位<T>,使用时才指定类型,使得输出与输入同类型的值
    function fn<T>(a:T):T{ return a}

约束泛型

    interface Ilength{ length: number}

    function fn<T extends Ilength>(a:T):T{ return a.length }

四、声明文件

  文件后缀: name.d.ts
  declare var Jquery:(selector:string) => any

简单方式:npm install @types 库名
网址http://definitelytyped.org/

五、类class与函数类型

类的特性:继承封装多态

类的修饰符

    public(默认-都可访问)、private(类自身可访问))、protected(类自身和子类可访问)
    readonly(只读)
    static(属于类自身的属性/方法)

函数

  function add(x:number, y:number):number{
      return x+y;
  }
posted @ 2021-11-11 19:31  忘川酒  阅读(32)  评论(0编辑  收藏  举报