typescript的类型主要有:
- boolean 布尔类型
- number 数字类型
- string 字符串类型
- array 数组类型
- tuple 元组类型
- enum 枚举类型
- any 任意类型
- null 和 undefined类型
- void类型
- never 类型
- object 对象类型
boolean
布尔类型
let flag:boolean = true;
//flag = "张三"; //错误
flag = false; //正确
number
数字类型
let number:number = 1;
// num = '李四'; //错误
num = 2; //正确
进制表示
let decLiteral: number = 6; // 十进制
let hexLiteral: number = 0xf00d; // 十六进制
let binaryLiteral: number = 0b1010; // 二进制
let octalLiteral: number = 0o744; // 八进制
string
字符串类型
let str:string = '张三';
str = '李四';
let name:string = '张三';
let age:number = 18;
let sentence:string = `Hello ,my name is ${name},${age} years old!`
Array
数组类型,[], Array<元素类型>
let arr:string[] = ['1','2','a','b'];
arr = ['123','345']
let temp:Array<number> = [1,2,3,4]
temp = [5,6,7]
tuple
元组类型
let tupleArr:[number,string,boolean];
tupleArr = [1,'2',true]
enum
枚举
enum Color {Red,Green,Blue}
let c:Color = Color.Red;
any
任意类型,可以指定任何类型的值,在编程阶段还不清楚类型的变量指定一个类型,不希望类型检查器对这些值进行检查而是直接让它们通过编译阶段的检查,这时候使用any类型,一般情况下项目是不允许出现any的,用多了就没意义了,变成了anyscript
let num:any = 123;
num = '123';
num = true;
let arr:any[] = [1,true,'abc'];
arr[1] = 2;
null 和 undefined
在js中null表示什么都没有,是一个只有一个值的特殊类型,标识一个空对象引用,而undefined表示一个没有设置值的变量。
默认情况下null和undefined是所有类型的子类型,表示可以把null和undefined赋值给number类型的变量
let num:number | undefined;//数值类型或者undefined
console.log(num);//正确
num = 1;
console.log(num);//正确
如果ts配置了--strictNullChecks,null和undefined只能赋值给void和他们各自
void
用于标识方法返回值的类型,表示方法没有返回值
function hello():void {
console.log("Hello world!")
}
never
never是其他类型,包括null和undefined 的子类,可以赋值给任何类型,代表不会出现的值
但是没有类型是never类型的子类型,这意味着声明never的变量只能被never所赋值
never类型一般用来指定那些总会抛出异常,无限循环
let a:never;
a = 123; //错误
a = (()=>{
throw new Error("错误")
})();
//返回never的函数必须存在无法到达的终点
function error(message:string):never {
throw new Error(message)
}
object
对象类型,非原始类型,常见的形式通过{}进行包裹
let obj:object;
obj = {name:'张三',age:18}
总结
和js基本一致,分为
- 基本类型
- 引用类型
在基础类型上增加了void,any,enum等原始类型
