在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 配置开启了 strict 或 strictNullChecks则不允许 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 类型没有任何值。