Ts数据类型

发布时间 2023-06-21 16:22:23作者: HuangBingQuan

如何进行类型约束

仅需要在 变量、函数的参数、函数的返回值位置加上:类型

ts在很多场景中可以完成类型推导

any: 表示任意类型,对该类型,ts不进行类型检查

基本类型

  • number:数字
  • string:字符串
  • boolean:布尔
  • 数组
  • object: 对象
  • null 和 undefined

null和undefined是所有其他类型的子类型,它们可以赋值给其他类型

通过添加strictNullChecks:true,可以获得更严格的空类型检查,null和undefined只能赋值给自身。

 # 举个例子-应用场景
  function isOdd(n: number):boolean {
    return n % 2 === 0;
  }

  let nums: number[] = [3, 4, 5];

  let nums: Array<number> = [3, 4, 5]; 

  let u:object = {};

  let test: string = null;
  function printValues(obj: object) {
    const vals = Object.values(obj);
    vals.forEach(v => console.log(v))
  }

其他常用类型

  • 联合类型:多种类型任选其一

配合类型保护进行判断

类型保护:当对某个变量进行类型判断之后,在判断的语句块中便可以确定它的确切类型,typeof可以触发类型保护。

  • void类型:通常用于约束函数的返回值,表示该函数没有任何返回

  • never类型:通常用于约束函数的返回值,表示该函数永远不可能结束

  • 字面量类型:使用一个值进行约束

  • 元祖类型(Tuple): 一个固定长度的数组,并且数组中每一项的类型确定

  • any类型: any类型可以绕过类型检查,因此,any类型的数据可以赋值给任意类型

 # 举个例子-应用场景
  let name: string | undefined;
  if(typeof name === 'string') { // 触发类型保护
    // name
  }
   function SayHi(): void {
    console.log("Hello HuangBingQuan!")
   }
   function throwError(msg: string):never { // nerver通常用于约束函数的返回值,表示这个函数永远不会结束
     throw new Error(msg)
     console.log("111")
   }

  let a: 6;
  a = 6;

  let gender: "男" | "女";
  gender = "男"

  let user: { name: string, age: number };
  user = {
    name: "34",
    age: 33
  }

  let tu: [string, number];
  tu = ["3", 4];

  let data:any = "sasdas";
  let num:number = data;