TypeScript中的类型
基本类型
- string: 字符串类型
let name: string = '张三'
- number: 数字类型
let age: number = 12
- boolean: 布尔类型
let isLogin: boolean = true
- object: 对象类型
let user: object = {
name: 'zs',
age: 12
}
- 数组类型
let arr: Array<number> = [1, 2, 3, 5] // 基础写法
let arr1: string[] = ['a', 'b', 'c', 'd'] // 第二种写法,更推荐
- null
let user: null = null
- undefined
let unde: undefined = undefined
默认null和undefined可以赋值给任意类型,例如
let name: string = null // 不会提示错误
let age: number = undefined // 不会提示错误
tsconfig.json配置文件中通过添加strictNullChecks:true,可以获得更严格的空类型检查,null和undefined只能赋值给自身,上述代码会提示错误
其他类型
- 联合类型
let a: string | number = 1
- void类型,约束函数返回值,表示函数没有返回值
function sayHi(name: string): void {
console.log(`hello, my name is ${name}`);
} // :void可以省略不写,没有返回值,默认类型推断就是void
sayHi('Jack')
- never类型,约束函数返回值,表示函数永远不会结束
function throwError(msg: string): never{
throw new Error(msg)
console.log(123); // 不会执行输出语句
}
- 字面量类型,用一些固定值约束,常用于强制约束
let gender: 'male' | 'female'
gender = 'male' // gender只能赋值为male或者female
// 对象的字面量写法,必须按照相关格式赋值,否则提示错误
let user: {
name: string
age: number | string
}
user = {
name: 'zs',
age: 11
}
- 元祖类型,一个固定长度的数组,并且数组中每一项的类型确定
let arr: [string, string, number, boolean]
arr = ['a','b', 123, false]
- any类型,会绕开类型检测,相当于没有约束,可以赋值给任意类型,存在隐患
let aaa: any = 123
let bbb: string = aaa // 由于使用了any,不提示错误,存在隐患
类型别名
自定义某个类型可能会重复使用,如
let user: {
name: string
age: number
gender: 'male' | 'female'
}
// 获取用户对象构成的数组
function getUsers():{
name: string
age: number
gender: 'male' | 'female'
}[]{
return []
}
user = {
name: 'Jack',
age: 12,
gender: 'male'
}
使用类型别名简化如下,同时方便维护
type User = {
name: string
age: number
gender: 'male' | 'female'
}
let user: User
function getUsers():User[]{
return []
}
user = {
name: 'Jack',
age: 12,
gender: 'male'
}