boolean
let isDone: boolean = false;
number
let a: number = 20; // 十进制let b: number = 0x14; // 十六进制let c: number = 0b10100; // 二进制let d: number = 0o24; // 八进制
string
let name: string = 'hello ts';
数组
let list: number[] = [1, 2, 3, 4];let list2: Array<number> = [2, 4, 6, 8];
元组
let arr: [string, number] = ['必须是字符串', 888];
enum 枚举类型
enum Habits {Rap,Basketbal = 100,Dance,}console.log({ ...Habits });
编译结果:声明一个对象 Habits,每一项添加一对属性 key-value value:key
var Habits;(function (Habits) {Habits[(Habits['Rap'] = 0)] = 'Rap';Habits[(Habits['Basketbal'] = 100)] = 'Basketbal';Habits[(Habits['Dance'] = 101)] = 'Dance';})(Habits || (Habits = {}));console.log(__assign({}, Habits));
打印结果:
{ '0': 'Rap', '100': 'Basketbal', '101': 'Dance', Rap: 0, Basketbal: 100, Dance: 101 }
any
数据类型未知,可赋值为任何类型数据(慎用),如果用了就没有类型推断了。
let unknowVal: any;unknowVal = 10;unknowVal = false;unknowVal = 'any';let arr2: any[] = [1, false, 'any'];
void
一般用于函数没有返回值
// 函数没有返回值时function getVoid(): void {// xxx}// 如果单独声明一个void变量没有什么实际意义,只能赋值为undefined 或null//(这两种类型是所有类型的子类型)let voidVar: void;// 配置文件tsconfig.ts启动空值检查,会报:不能将类型“null”分配给类型“void”// voidVar = nullvoidVar = undefined;// 启动空值检查 --stringNullCheckslet num = 1;// 配置文件tsconfig.ts启动空值检查,会报:不能将类型“null”分配给类型“number”// num = null// 如果需要null类型,可以使用联合类型let num2: number | null = null;
never
- 使用情况:函数没有返回值、抛错、死循环
- 任何类型的字类型
//抛错function throwAError(): never {throw new Error();}// 推断的返回值类型为neverfunction fail() {return throwAError('Something failed');}// 死循环function infiniteFn(): never {while (true) {console.log('never stop!');}}
object
function createObj(obj: object | null) {return obj;}// 函数也是objectcreateObj(infiniteFn);
类型转换
let anyValue: any = 'this is a string';// 方式一let len: number = (<string>anyValue).length;// 方式二(推荐)let len2: number = (anyValue as string).length;
