数据类型:
number,string,boolean跟js类同
字面量
它就是值本身及值本身的类型
let a: 10
a = 10;
a = 125;
a = "123";
any表示任何类型,可以任意赋值
一个变量赋值为any后相当于对该变量关闭了ts的类型检测
在使用ts时候不到万不得已则不建议使用any
let c: any
c = 2
c = true
c = "2"
// 声明一个变量如果不给他赋值则相当于隐式的给当前变量赋值成了any
let d;
d = 2
d = "2"
d = true
unknown表示未知的类型
let e:unknown
let s : string
// e = 10
// e = "10"
// e = true
// e = d
// s = e
// unknown实际上就是一个类型安全的any
// unknown类型的变量不能直接赋值给其他的变量
// 1. 可以通过对e变量类型的判断进行赋值
e = 'hello';
if(typeof e === "string"){
s = e
}
2. 或者使用类型断言
// 告诉编译器e就是字符类型可以被s使用
s = e as string
// 当遇到一个类型不确定的变量时能不用any就不用any,推荐使用unkonwn
当把一个any类型的变量赋值给unknown之后也会变成any任意类型
但是unknown类型的变量直接赋值给别的变量则报错不会影响到其他的变量
void代表函数没有返回值
function fn1():void{
//return null|undefined//不报错
// return 1323等类型则报错
}
never永远不会有返回值,没有任何返回值
使用场景:用于异常抛出,返回报错
// function err():never{
// throw new Error("报错了!");
// }
// void和never的区别是:
// void有null或者undefined作为返回值
// never是没有任何返回值
object表示一个js对象
一般不常用,因为js中一切皆为对象所以,object这个类型太广泛不好限制
let a :object
a = {}
a = function (){}
{}用来指定对象中可以包含哪些属性
// age?:number属性名后加问号表示属性是可选的,有也可以没有也可以
let b: {name:string,age?:number}
b = {name:"孙悟空",age:22}
[propName:string]: any表示任意类型的属性
// [propName:string]: string表示任意类型的字符串属性
let c: {name:string,[propName:string]: string}
c = {name:"猪八戒",sex:"555",job:"4656"}
Array
array的类型声明方式:类型:[],Array<类型>
// string[]表示字符串数组
let d: string[]
d =["1323","住宿等我","dwad"]
// number[]表示数字数组
let f: number[]
f = [1,2,3,6,54]
// 可以指定未知的类型或者多个类型Array<unknown>/any
let g: Array<unknown>
g = ["wewe",122,true]
Tuple元组就是固定长度的数组
// 语法:[类型,类型,类型]
let h: [string,string]
h = ["www",'www']
enum枚举
enum Gender{
boy=1,
girl=0
}
let i:{name:string,gender:Gender}
i = {
name:"小明",
gender:Gender.boy
}
console.log(i.gender===Gender.boy)
// 类型的别名
type myType = 1|2|3|4|5
let k: myType
let l: myType
let m: myType
k = 5//有则不报错
// k = 6类型中无6则报错
| &运算符
|可以用来连接多个类型{联合类型}
let b:number|boolean
b = 2
b = true
&表示并且的意思
表示名字必须是字符串年龄必须是数字类型
// let a: {name: string},{age:number}
函数
ts中可以根据函数内返回值的类型来判断函数的类型是什么
例子:光标移动到函数名上发现,此时的函数类型是boolean|number类型
// num的类型由于未指定所以是any
function fn(num){
if(num>0){
return true
}else{
return 123
}
}