等我正式入职后会提升文章的质量的……或者拿了心仪的offer后,也会对之前的文章做可读性的修改与备注(至于现在还是会写的比较适合有经验的同学复习)。
-
原始数据类型
- 布尔值
- 数值
- 字符串
- null
- undefined
- ES6 中的新类型 Symbol
//布尔值
let isDone: boolean = false;
let createdByNewBoolean: boolean = new Boolean(1);
// 'boolean'是一个原始数据类型, but 'Boolean'是一个对象.
//数值
let decLiteral: number = 6;
let hexLiteral: number = 0xf00d;
// ES6 中的二进制表示法
let binaryLiteral: number = 0b1010;
// ES6 中的八进制表示法
let octalLiteral: number = 0o744;
let notANumber: number = NaN;
let infinityNumber: number = Infinity;
//字符串
let myName: string = 'Tom';
let myAge: number = 25;
// 模板字符串
let sentence: string = `Hello, my name is ${myName}.I will be ${myAge + 1} years old next month.`;
// 函数return 为空的时候,使用viod代表 ‘空’
function alertName(): void {
alert('My name is Tom');
}
// null 和 undefined
let u: undefined = undefined;
let n: null = null;
// 与 void 的区别是,undefined 和 null 是所有类型的子类型。也就是说 undefined 类型的变量,可以赋值给 number 类型的变量:
let num: number = undefined;// 可
let u: void;
let num: number = u;// 不可
-
不得不提的 any
使用any很大程度上你可以视为你正在使用js而非ts
如果是一个普通类型,在赋值过程中改变类型是不被允许的:
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
// 报错
如果是any
let myFavoriteNumber: any = 'seven';
myFavoriteNumber = 7;
// 一切ok
-
联合类型
不扯概念,简单例子:
let myFavoriteNumber: string | number;
myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
// 不报错
let myFavoriteNumber: string | number;
myFavoriteNumber = true;
// 报错
访问不共有的属性的时候,会报错,如下所示,number并不拥有length属性,所以会报错。
function getLength(something: string | number): number {
return something.length;
}
toString()是大家都有的方法,所以不报错
function getString(something: string | number): string {
return something.toString();
}
-
类型推论
这个……也没啥好说的。
let myFavoriteNumber = 'seven';
myFavoriteNumber = 7;
// 实际上等于
let myFavoriteNumber: string = 'seven';
myFavoriteNumber = 7;
// 所以会报错