TypeScript总结

158 阅读4分钟

一、前言

1.1什么是TypeScript

  • TypeScript(简称:TS)是 JavaScript 的超集(JS 有的 TS 都有)。
  • 从编程语言的动静来区分,TypeScript 属于静态类型的编程语言,JS 属于动态类型的编程语言。 静态类型:编译期做类型检查; 动态类型:执行期做类型检查。 代码编译和代码执行的顺序:先编译再执行。
  • 由于TS,在编译时就开始做类型检查了,所以TS 可以提前到在编写代码的同时就发现代码中的错误,减少找 Bug、改 Bug 时间

1.2Ts与Js比较

image.png

二、TypeScript的数据类型

2.1概述

  • 可以将 TS 中的常用基础类型细分为两类:JS 已有类型 与 TS 新增类型。
  • JS已有数据类型:基本数据类型与引用数据类型
  1. 基本数据类型:number、string、boolean、null、undefined、symbol
  2. 引用数据类型:object(包括:数据array、函数function、对象等)
  • TS新增类型
  1. 自定义类型(类型别名)、联合类型、接口、元组、自变量类型、枚举、void、any等等

2.2Ts使用Js基本数据类型

1 number

let number: number = 23

2 String

let myName: string = '123'

3 boolean

let isYouth: boolean = true

4 null

let a: null = null

5 undefined

let b: undefined = undefined

6 symbol

let s: symbol = Symbol()

7 小结

  • 写法: 变量 :数据类型 = 类型值
  • 通过数据类型为变量进行约束,从而只能给变量赋值该类型的值

2.3 Ts使用Js引用数据类型

1 数组(array)

  • 一:变量:数据类型[] = ['该数据类型的值1','该数据类型值2'……]

      const numbers: number[] = [1,2,4,5] // 该写法是一个纯数字数组数据类型,数组内只包含数字类型
      const strs: string[] = ['1','2','3'] // 数组内只包含字符串类型
    
  • 二:变量:Array<数据类型> = ['该数据类型的值1','该数据类型值2'……]

      const numbers2: Array<number> = [1,2,4,5]
      const strs2: Array<string> = ['1','2','3']
    

针对于以上两种方法,只能定义一个数组,然后数组的值只能是纯规定数据类型的值,数组中不能又其他类型的值;如果一个数组中能有nuber、 string、boolean等多个数据类型在同一个数组中,需要使用联合数据类型:变量: (数据类型)[] = [字面量,……]

2 函数(function)

  • 一:单独指定参数、返回值的类型
  1. 普通函数:function 函数名 (参数1: 参数类型, 参数2: 参数类型…): 函数返回数据类型 {}

  2. 箭头函数:const 函数名 = (参数1: 参数类型, 参数2: 参数类型…): 函数返回数据类型 => {}

    function add (number1:number, number2: number): number { // 普通函数
        return number1 + number2
    }
    console.log(add(1,2))
    const addFn = (number1:number, number2: string): string => { // 箭头函数
        return number1 + number2
    }
    console.log(addFn(2,'fv'))
    
  • 二:同时指定参数、返回值的类型(这种方法适用于箭头函数)
  1. const 函数名: (参数1: 参数类型,参数2: 参数类型…) => 函数返回数据类型 = (参数1,参数2) => {}

    // 只适用于函数表达式,例子:
    const addFn: (number1:number, number2: string) => string = (number1,number2) => {
        return number1 + number2
    }
    
  • 如果函数没有返回值,那么,函数返回值类型为:void
  • 使用函数实现某个功能时,参数可以传也可以不传。这种情况下,在给函数参数指定类型时,就用到可选参数了。
  1. 可选参数: 在可传可不传的参数名称后面添加 ?(问号)

  2. 注意:必填参数必须在可选参数之前

    function mySlice(start:number,end?:number):void {
        console.log("开始:" + start + '结束' + end )
    }
    mySlice(1)
    mySlice(1,6)
    

3 对象(object)

  • JS中的对象是由属性和方法构成的,而TS 中对象的类型就是在描述对象的结构(有什么类型的属性和方法)。
  1. 直接使用{}来描述对象结构。属性采用属性名: 类型的形式,方法采用方法名(): 返回值类型的形式
  2. 如果方法有参数,就在方法名后面的小括号中指定参数类型(比如: greet(name: string): void )
  3. 在一行代码中指定对象的多个属性类型时,使用; / ,( 分号或者逗号) 来分隔
  • 如果一行代码只指定一个属性类型( 通过换行来分隔多个属性类型),可以去掉;(分号)。
  • 方法的类型也可以使用箭头函数形式(比如 :{sayHi: () => void1}

4 接口(interface)

  • 当一个对象类型被多次使用时,一般会使用接口 (interface )来描述对象的类型,达到复用的目的

    interface IPerson {
      name: string
      age: number,
      say:() => void,
      greet(name:string):void
      }
    

5 元组(tuple)

  • 确切的控制了这个数据有多少个元素,以及元素的类型;

  • 赋值多了会报错,不对应赋值也会报错

      let position: [number, string] = [39, '114']