typescript有几种比较特殊的数据类型
any
any 类型的变量可以接收任意类型的值,并且变量的数据类型可以动态改变
var a : any;
a = 1;
console.log(a);
a= 1.1;
console.log(a);
a=false;
console.log(a);
a=[1,2,3]
console.log(a);
a="hello world!";
console.log(a);
运行结果:
1
1.1
false
[ 1, 2, 3 ]
hello world!
null
表示一个空对象引用,用typeof检测null返回是obeject
var t;
console.log(t);
运行结果:
null
undefined
表示没有设置任何值的变量
class Shape {
area: number;
color: string;
constructor (name:string, width:number, height:number) {
this.area = width+height;
this.color = "pick";
};
shoutout() {
return "I'm" + this.color+ " "+" with an area of";
}
show(){
}
}
var s = new Shape('hello', 1, 1);
console.log(s.show());
运行结果:
undefined
show()方法没有返回任何值,故打印结果是undefined
never
表示不会出现的值,声明为never类型的变量只允许nerver类型的变量所赋值。
在函数中它通常表现为抛出异常或无法执行到终止点(例如无限循环),示例代码如下:
function loop(): never {
while (true) {}
}
联合类型
可以给联合类型的变量赋值它指定的数据类型
let x:number|undefined|null|never