typeScript基本数据类型

169 阅读4分钟

在TypeScript中的数据类型与javaScript一样分为基本数据类型与引用数据类型。

1. string 字符串

let str:string = "佩奇";
console.log(str)

2. number 数值类型

let num:number = 18;
console.log(num)

3. boolean 布尔数据类型

let bol:boolean = true;
console.log(bol)

4.数组

在数组中可以存储指定的一种数据类型或者存储指定的类型数据

4.1 数组中存储一种数据类型

let arr1:number[] = [1,2,3] // 此时只能存储数值类型的数据let arr2:Array<number> = [1,2,3] // 这样的写法与上面的语义是一样的,只是写法不一样。

4.2 数组中存储多种数据类型

let arr1:(number | string)[] = [1,2,"3"]//可以存放数字和字符串的数据let arr2:Array<string|number> = [1,2,"3"]

5. 元组

在元组中的每个成员都是提前明确声明的

let tuple:[sstring,boolean,number];
tupleee = ["1",false,2]

注意:在元组中元素的长度和位置及数据类型必须与定义时的一致。

6. 对象

 //只是声明对象类型而不限制值类型
let obj1:obj = {}
// 限制值的类型
let obj2:{name: string,sex:string} = { name: "qiaozhi",sex:"man"};
//属性后面跟上? 用来指定 属性 为可选值,这样的属性是非必填项
let obj3:{name: string,sex: string,age?:number} = { name: "佩奇",sex:"girl

7. 索引签名

如果有明确的索引名称可以使用下面方式来定义签名

type Info = {
  name: string
  city: string
}
​
let peiqi: Info = {
  name: 'peiqi',
  city: 'zhuquan'
}

如果定义任意属性的签名,可以使用索引签名完成

type Info = {
  [key: string]: keyof any
}
​
let user: Info = {
  name: 'qiaozhi'
}

如果需要索引带有指定后缀,则可以使用模板字符串进行书写

type Info = {
  [key: `${string}U`]: keyof any
}
​
let P: Info = {
  nameU: 'qiaozhi'
}

8. any 任意数据类型

使用 any 指包含所有值的顶部类型,所以 any 不进行类型检查,等于关闭了 TS 对该变量的严格类型校验

  • 使用 any 类型等同于使用纯 JavaScript 的开发方式
  • any 类型是顶部类型,所有其他类型是他的子类型
  • 使用 any 类型将失去 typescript 静态类型的强制检测
  • 只有在描述一个根本不知道的类型时使用 any

可以将 any 视为所有类型的组合表示

let P:string|boolean|number;
P = '后盾人'let P:any
P = '后盾人'

any 太过宽泛所以不建议使用,他会丢失 TS 的严格类型校验

9.unknown

unknown 类型也是顶部类型这与 any 一样

  • unknown 用于表示未知的类型
  • 会进行 TS 的类型检查,any 不进行 TS 检查
  • 使用 unknown 类型时可以使用 as 类型断言来明确类型

下面是 any 与 unknown 赋值上的区别,unknown 需要明确类型后赋值,any 则不需要

let pq:any ='佩奇'
let qiao:unknown = '乔治'let a:string = pq
let b:string=qiao //报错: 'unknown'未知类型不能赋值给'string'类型// unknown 类型需要明确类型后赋值
let c:string=qiao as string

可以把任何值赋值给 unknown 类型,但在使用时需要指明类型

10. void

void 类型的值为 null 或 undefined,常用于对函数返回值类型定义

  • 严格模式(tsconfig.json 配置中关闭strict)时,void 值只能是 undefined(有关 TS 配置会在后面章节介绍)
  • 如果函数没有返回值请使用 void 类型,这会使用代码更易读,并可对不小心造成的函数返回内容进行校验
  • 你也可以将 void 理解为对返回 null 或 undefined 的函数返回值声明
  • TypeScript 中,不返回任何内容的 void 函数实际上返回的是 undefined

void 类型的值可以是 null 或 undefined,但如果 TS 配置开启了 strictstrictNullChecks则不允许 void 为 null

let a:void = undefined;
let b:void = null;

void 不允许设置其他类型

let a:void
a='peiqi' //设置string 将报错

经过 void 限定后是不允许函数返回内容的,所以以下代码将报错

function T():void{
    return '乔治'
}

11. never

never 是任何类型的子类型,可以赋值给任何类型,没有类型是 never 的子类型。

never 类型的特点

  • never 没有任何子类型,所以任何类型都不可以赋值给 never
  • 函数抛出异常或无限循环时返回值是 never
  • 可以将每个类型理解为某类值的集合,比如 number 类型包含所有数字,但 never 类型没有任何值。