对类型进行校验
布尔值
let bool:boolean = true;
数值类型
let num:number = 12;
num = 0b1111011;
num = 0o173;
num = 0x7b;
字符串类型
let str:string = 'abc'
str = `数值是${num}` //也可以使用字符串模板
数组类型
let arr1:number[] = [1,2,3,4]
let arr2:Array<number>[] = [1,2,3]
let arr3:(string|number)[] = [1,'a']
元组类型
let tuple:[string,number] = ['a',1]
枚举类型
enum Roles {
SUPER_ADMIN, //0
ADMIN, //1
USER //2
}
console.log(Roles.USER) // 2
//也可以指定索引
enum Roles {
SUPER_ADMIN = 1, //1
ADMIN, //2
USER //3
}
console.log(Roles.USER) // 3
//特别注意 这个部分 第二个索引设置了4后面的数据索引依然递增,而第一位索引依然是0
enum Roles {
SUPER_ADMIN, //0
ADMIN = 4, //4
USER //5
}
console.log(Roles.USER) // 5
any类型
let value:any = 1;
value = true;
value = 'abc';
//可以为任意类型
void类型
const consoleText = (text:string):void => {
console.log(text)
}
consoleText('abc')
//void指的是没有任何return的值
null和undefined
//既是值也是类型
//付给其他值会报错
let u:undefined = undefined;
let n:null = null;
never类型
// 永远不存在的值
// 是任何类型的子类型
const errorFun = (message:string):never => {
throw new Error(message)
}
object
function getObject(obj:object):void{
console.log(obj)
}
类型断言
//(<string>target)
//(target as string)
//两种都是可以的
const getLength = (target:string | number):number => {
if ((<string>target).length || (targer as string).length === 0 ){
return (<string>target).length
} else {
return target.toString().length
}
}
getLength('abc');
getLength(123);