前言
在ts出现之前,我们一直都在使用js的弱类型书写代码,这就导致了我们在书写过程中需要频繁的人为注意数据类型,但有了ts之后我们在写代码时都会有严格的类型约束,很明显提高了我们的开发速度。
基本类型声明
// 布尔类型
let bool: boolean = false;
// 数字类型
let num: number = 1;
// 字符串类型
let str: string = "str";
复制代码
数组声明
//声明一个空数组
let arr1: number[];
arr1 = [5];
//限定数组内只能存放数字
let arr2: Array<number>;
//限定数组内只能存放数字和字符串
let arr3: (string | number)[];
arr3 = [1, 'a'];
复制代码
元组类型
//这个和数组差不多,但是长度固定且存值时固定位置和对应参数类型必须一致。
let tuple: [string, number, boolean];
tuple = ['a', 1, true];
复制代码
枚举类型
enum Roles {
SUPER_ADMIN = 1,
ADMIN,//2
USER//3
}
console.log(Roles.SUPER_ADMIN);
复制代码
any类型
any允许任何类型的值进行覆盖
let value: any;
value = 'abc';
value = 123;
value = false;
const arr4: any[] = [1, 'a'];
复制代码
参数类型
const consoleText = (text: string): void => {
console.log(text)
};
consoleText('abc');
//只能传入string类型
复制代码
never类型
一般抛错和死循环我们把函数返回值设置为never类型
const errorFunc = (message: string): never => {
throw new Error(message)
};
const infiniteFunc = (): never => {
while (true) {
}
};
复制代码
object类型
函数没有返回值就设置为void类型
let obj = {
name: 'lison'
};
let obj2 = obj;
obj2.name = 'L';
console.log(obj);
function getObj(obj: object): void {
console.log(obj)
}
getObj(obj2);
复制代码
类型断言
可以使用参数 as 类型语法让ts推断出相应类型
//类型断言
const getLength = (target: string | number): number => {
if ((<string>target).length || (target as string).length === 8) {
return (target as string).length
} else {
return target.toString().length
}
};
getLength(3);
复制代码
总结
到此我们就了解了typescript的基本类型的使用