Ts中 string number boolean
let username:string='xiaosan'
let age:number=20
let flag:boolean=true
Ts中的数组
let arr:string[]= ['1','2','3']
let num:number[]=[1,2,3]
Ts中的对象
let obj:{username:string,age:number}={username:"xiaosi",age:20}
//如果可以属性可以省略可以加问号
let user:{username:string,age?:number}={username:"xiaowu"}
TS中的联合类型
//参数id的类型可以是string或者number
function fun(id:string|number){
//可以使用类型收窄 就是利用数据类型判断加逻辑
if(typeof id == "string"){
return id.toUpperCase()
}else{
return id
}
}
TS中类型别名
如果类型数据一样,数据有好多份,可以给类型起别名,别的地方复用即可
type Goods={name:string,price:number};
let goodsobj1:Goods={name:"苹果",price:20}
let goodsobj2:Goods={name:"橘子",price:21}
TS中的any类型
如果定义一个函数,函数参数的数据类型任何类型都可以的话,可以使用any
默认的情况下不给也不会报错,但是为了规范我们可以设置ts的配置文件
tsconfig.json
{
"compilerOptions":{
"noImplicitAny": true
}
}
function test(message:any){
}
ts中函数的返回值
//返回值为数字型的函数
function test(message:any):number{
return 123
}
//返回值为无类型
function test2(message:any):void{
}
接口类型 interface
可以定义让用户可以扩展的数据类型展示,能用interface就用interface 不能用的话可以使用type
//接口类型 interface
interface Person{
name:string,
age?:number
}
//接口可以扩展 继承
// interface Student extends Person{
// male:string
// }
// const obj:Person={name:"小三",age:20}
// const stu:Student={name:"小四",male:"男"}
//接口类型也可重复定义
interface Person{
male:string
}
const stu:Person={name:"小苏",age:20,male:"女"}
断言 Assersion
断言是绕过ts的类型检测
语法:let 变量:类型=值 as 断言的类型
或者 let 变量=<断言类型>值
let domobj:HTMLElement=document.getElementById("#root") as undefined
let domobj2=<undefined>document.getElementById("#root")
字面量类型
大白话 字面量类型就是字面的意思
设置的类型为字面量‘123’ 那么变量的值只能是123 否则报错
const str:'123'='123'
一般会用在限制函数参数的地方
function setPosition(position:'left'|'right'):string{
return position
}
setPosition('top')//报错
setPosition('left')//不报错
function request(url:string,method:'GET'|'POST'):string{
return '我要发请求'
}
const params:{url:string,method:string}={url:'/user',method:"GET"}
request(params.url,params.method)
null undefined
默认情况下这两种类型可以互换,如果需要严格校验的话需要设置参数
"strictNullChecks": true
const testNull:null=null
const testUndefind:undefined=undefined
function test(str:string|null){
//类型收窄
if(typeof(str)=="string"){
return str.toLowerCase()
}
}
网友评论