一、number 类型
let num:number=123 //十进制
num=222
let num2:number=100 //十进制
let num1:number=0b1011 //二进制 注意:二进制只能是0 和1
let num3:number=0o456 //八进制
let num4:number=0x123abc //16进制
二、boolean 类型
let flag:boolean=true
flag=false
flag=20>30
三、string 字符串类型
/类型注解加可以也可以不加,到以后也会推倒出来
const name1="jiang"
const age1=18
let message2:string=`name1:${name1} age1:${age1}` //模版字符串拼接
四、Array 数组类型
//1.第一种写法
const names:Array<string>=[]
//2.第二种方式
const names2:string[]=[] //推荐
五、对象类型(使用推倒类型)
const info={
name:"jiang",
age:18
}
六、null 和 underfine 类型
//null 的类型 只有一个值 就是 null
const n1:null=null
//undefined 的类型 只有一个值 undefined
const h2:undefined=undefined
七、any 类型
在某些情况下,我们无法确定一个变量的类型,并且可能它会发生一些变化,这个时候我们可以使用any 类型(使用场景:在不想给某些JavaScript 添加具体的数据类型时)
let message:any="hellowx"
message=123
message=false
message=null
八、unknown 类型
1.unknown 类型只能赋值给any 和 unknown类型
2.any类型可以赋值给任意类型
let flag=true
let result:unknown
let message:any=result
九、void 类型(不常用)
void 通常用来指定一个函数是没有返回值的,那么它的返回值就是void类型:
我们可以将null 和undefined 赋值给void 类型,也就是函数可以返回null或者undefined
function sum(num1:number,num2:number):void{
//当一个函数值是void 的类型是,函数返回值可以是null
return null
}
sum(20,30)
十、never 类型
never 表示永远不会发生值的类型,比如一个函数:
如果一个函数是一个死循环或抛出一个异常,那么这个函数值会返回东西吗?
不会,那么写void 类型或者其他类型作为返回值类型都不合适,那我们就可以使用never类型
//1.
function foo():never{
//死循环
while(true){
}
}
//2.抛出异常
function bar():never{
throw new Error()
}
十一、tuple 元组类型
tuple 元组: 多个元素的组合
元组的特点:确定每个元素到底什么类型
//tuple 元组: 多个元素的组合
//举例子:假如需要把这组信息保存到一个数组里面:“jianyy” 16 3.5
//1.数组的弊端 不能知道每个元素的类型
const info:any=["jiang",16,3.5]
//2.元组的特点:确定每个元素到底什么类型
const info1:[string,number,number]=["jiang",16,3]
十二、函数的参数和返回值类型
//给参数加上类型注解:num1:number,num2:number
// 给返回值加上类型注释:():number
function sum(num1:number,num2:number):number{
return num1+num2
}
十三、匿名函数的参数类型
通常情况下,在定义一个函数时,都会给参数加上类型注解的
const names=["abc","cba","nbc"] //item根据上下的环境推倒出来的,这个时候可以不添加类型注解 //上下文的函数:可以不添加类型注解 names.forEach(function(item:string){ //item 来自于数组,数组来自于 })
十四、对象类型
function printPoint(point:{x:number,y:number}){
console.log(point.x)
console.log(point.y)
}
printPoint({x:123,y:321}) //这样写确保比人传进来一定有一个或者y,且值是一个number
十五、可选类型
在一个函数参数里面,有可能遇到这种情况,有的地方可以传这个参数进去,有的地方别人不想传这个参数进去,这时候我们可以用到可选类型 符号:? 表示,可以传也可以不传。
function printPoint(point:{x:number,y:number,z?:number}){ console.log(point.x) console.log(point.y) } printPoint({x:123,y:321}) //这样写确保比人传进来一定有一个或者y,且值是一个number
十六、联合类型
//number | string 联合类型
function printID(id:number|string|boolean){
//使用联合类型的值时,需要特别小心
if(typeof id==="string"){
console.log(id.toLowerCase)
}
}
printID(123)
printID("ac")
printID(false)
十七、字面量类型
字面量类型的意义,就是必须结合联合类型
//"hello world" 也可以是作为类型的,叫做字面量类型
// const message:"hello world"="hello world"
let align:'left'|'right'|'center'='left'
align="right"
align="center"
字面量推理:
type Method='GET'|'POST'
function request(url:string,method:Method){}
const options ={
url:"https://www.hhaha.org/cn",
method:"POST" //存在安全隐患,推倒出来的是字符串,也就是也可以是其他任何值
}
request(options.url,options.method as Method) //这里转成具体的就可以是二者之一了