TS介绍

  1. ts是由微软开发的开源的编程语言
  2. ts是js的超集
  3. ts是开发大型应用的基石
  4. ts提供了更丰富的语法提示
  5. ts可以在编译阶段检查错误

原始数据的注解

any 数据类型:任意数据类型

  1. 可以是任意数据类型
  2. 如果是对象的话,any 不能够提示原有的属性和方法
  3. 未给初始值的变量类型为any
  4. 变量初始化并赋值的时候,如果值为null 或 undefined且没有指定数据类型,则变量类型被推断为 any
    1. const a = null; // a为any类型
    void
    没有返回值,值只能为 undefined 或 null

null && undefined

  1. null和undefined是所有类型的子类型
  2. 通过设置tsconfig.json的strictNullChecks,可以让let num : number = undefined

Never 表示永不存在的值类型

  1. 例如一个函数,仅仅抛出一个错误,那么它的返回值就是never类型

object 表示非原始类型

联合类型

  1. 联合类型的共有属性不会报错

接口 interface

  1. 对象的形状进行描述
  2. 对类的一部分行为的抽象
    1. interface Person{
    2. readonly id: number; // 只读,赋值后不可修改
    3. name:string;
    4. age?:number; // 可选属性,可有可无
    5. [propName: string]: any; // 任意属性,必须为any
    6. }

数组的注解

写法方式

  1. 类型[] number [] 没有长度限制
  2. Array<类型> Array<number>
  3. interface方式
    ```typescript interface list{

}

  1. <a name="E7jRi"></a>
  2. #### 函数的注解方式
  3. 1. 函数声明的注解方式
  4. ```typescript
  5. function test(a:number,b:number):number {return a + b }
  1. 函数表达式的注解方式

    let test1:(a:number,b:number) => number = function(a:number,b:number):number{return a + b}
    
  2. 函数默认值并解构注解方式

    function test({a,b}:{a:number,b:number} = {a:1,b:2}){return a + b}    // 多个参数
    function test({a = 2}:{a:number}){return a}    // 单个参数
    

函数的重载

TS中函数是为了让表意更清楚

function reverse(x:string):string
function reverse(x:number):number
function  reverse(x:string | number){
  if(typeof x === 'string'){
    return x.split('').reverse().join() 
  }
  if(typeof x === 'number'){
    return Number(x.toString().split('').reverse().join())
  } 
}