从这个阶段开始将会对Typescript官方文档进行总结记录。
TypeScript 支持与 JavaScript 几乎相同的数据类型.
布尔值 boolean
let ts:boolean = false;
数字 number
let ts:number = 1;
let ts:number = 0x0xf00d;
字符串 string
let ts:string = "字符";
let ts:object = new Date();
数组 array
let ts: number[] = [1];
let ts: Array<number> = [1]; //数组泛型写法
let arrd:[string,number] = ["1",1];//元组写法,指定位置的类型,访问越界代码时,只可以访问 string | number 的公有方法,例如 toString,否则报错
let arrany:any[] = [1,2,"3",new Date()];//利用 any 在数组里定义任意类型
枚举 enum
编译结果中会包含 enum 代码.
enum sex {male,female};
let male:string = sex[0];
let female:string = sex[1];
===> 编译结果
var sex;
(function (sex) {
sex[sex["male"] = 1] = "male";
sex[sex["female"] = 0] = "female";
})(sex || (sex = {}));
任意 any
表示任意类型
let ts:any = "任意值,并且不写 any 默认也是 any,void 与其相反";
空值 void
表示没有任何类型,它只能赋值 null 和 undefined
let ts:void = undefined;
let ts:void = null;
null 和 undefined
特例: null 和 undefined 是所有类型的子类型(除了never类型),可以赋值给任何类型,但是当strictNullChecks=true时,null 和 undefined 只能赋值给void 和 本身类型,推荐strictNullChecks=true,因为这样可以避免很多隐藏的bug.
let ts:number;
let un:undefined = undefined;
let nu:null = null;
//strictNullChecks=false,赋值成功
ts = un;
ts = nu;
//strictNullChecks=true,赋值失败,
ts = un;
ts = nu;
never类型
是任意类型的子类型,没有类型可以给never类型赋值,即使any也不行.
let ner:never;
// 返回never的函数必须存在无法达到的终点
function error(message: string): never {
throw new Error(message);
}
// 推断的返回值类型为never
function fail() {
return error("Something failed");
}
// 返回never的函数必须存在无法达到的终点
function infiniteLoop(): never {
while (true) {
}
}
object
object表示非原始类型,也就是除number,string,boolean,symbol,null或undefined之外的类型。使用object类型,就可以更好的表示像Object.create这样的API。
declare function create(o: object | null): void;
create({ prop: 0 }); // OK
create(null); // OK
create(42); // Error
create("string"); // Error
create(false); // Error
create(undefined); // Error
类型断言 as
有时候你会比Typescript更清楚某个变量的类型是什么,你可以通过类型断言来跳过Typescript的类型检查
let result:object;
$.ajax({
url:'xxx.jsp',
success(data){
result = (data as object); //方式一,推荐,jsx时只有这种方式有效
result = (<obejct>data); //方式二
}
})