类型格式

格式:普通变量:
let|const 变量名:类型 = 值
函数:
(变量:类型)=>返回值类型
方法名(变量:类型): 返回值类型{}
function 方法名(变量:类型): 返回值类型{}

基础类型

string、number、boolean、undefined、null、symbol、void

  1. let courseName :string = '大圣编程课堂'
  2. let age :number = 18
  3. let isOnline :boolean = true

any数据类型

any数据类型:可以是任何数据类型的值

  1. let anyThing :any

组合的数据类型

  1. let course : number|string = '大圣'
  2. course = 18

对象类型

对象

  1. let obj: {
  2. "name": string,
  3. "age": number
  4. } = {
  5. "name":"zhangsan",
  6. "age":18
  7. }

数组

  1. // 1. 数组值 全是number类型
  2. let arr: number[] = [1,2,3]
  3. // 2. 数组值 number或string
  4. let arr: (string|number)[] = [1,2,'a',3,'bb']
  5. // 3. 数组值 任意类型 => 任意类型可以不加
  6. let arr2: any[] =[1,2,3,'4',[1,2]]
  7. // 4. 数组类型 对象 => let arr: {}[] = [{}]
  8. let arr: {name:string,age:number}[] = [ // arr后的对象可以使用 type定义类型别名==>简化写法
  9. {name:'zhangsan',age:14},
  10. {name:'lisi',age:18}
  11. ]

元祖

元祖:限定数组固定格式

  1. // 1. 限定数组值只有两个,第一个必须是number,第二个必须是string
  2. let arr1: [number,string] = [1,'1']
  3. // 2.限定数组值必须是数组 且 数组值的值必须是三个,第一个第二个必须是字符串,第三个必须是number
  4. let arr2: [string,string,number][] = [['a','a',1],['b','b',2],['c','c',3]]

  1. class Person{}
  2. const per:Person = new Person()

函数

  1. // fn为函数名;冒号后为数据类型,规定函数返回这值只能是number;等号后为函数体
  2. let fn: ()=>Number = ()=>{
  3. return 123
  4. }

类型注解

  1. 类型注解:我们定义变量是什么类型;简而言之,我们要规定出变量的类型。

    1. let num1: number = 123 // 定义变量类型是number
  2. 函数类型注解

  • void代表为空,不能有返回值
  • 如果不定义函数 行参 和 返回值 的类型,那么默认为any ```javascript // 1.定义函数的参数v1、v2都为number;定义函数的返回值为string; function fn1(v1:number,v2:number) : string{ return v1 + v2 + ‘str’ } let res1 = fn1(1,2) // res1自动类型推断为string

// 2.函数定义参数v1为string、v2为number;定义函数返回值是void,void代表为空; function fn2(v1:string,v2:number): void{ return } let res2 = fn2(‘str’,1) // res2自动类型推断为void

  1. - 解构类型的函数注解
  2. ```javascript
  3. function fn1({v1,v2}:{v1:number,v2:string}):string{
  4. return v1 + v2
  5. }
  6. let res = fn1({v1:1,v2:'2'})

类型推断

类型推断指 ts会自动分析出来变量的类型。简而言之:即使我们不注解变量的类型,ts也不会报错,会自动识别出变量的类型。
截屏2022-03-01 下午1.43.38.png
如图:ts可以自动推断出str为string

类型推断和类型注解什么时候用?

  1. 如果ts能够自动分析出变量类型,那咋们就不加了
  2. 如果ts不能自动分析出变量类型(如分析出为any),那咋们就是用类型注解