let myname:string="小米";let age:number=18;let bool:boolean=true;console.log('1.布尔、数字、字符串类型', myname, age, bool);
2.元组类型
// 限制长度个数、类型一一对应let tuple:[string,number]=['123',1]
tuple.push('456')// 像元组中增加数据,只能增加元组中存放的类型// tuple.push(true); // Argument of type 'boolean' is not assignable to parameter of type 'string | number'.console.log('2.元组类型', tuple)
// 任何类型的子类型,如果 tsconfig.json 内配置 strictNullChecks:true 时(默认为 true),则不能把 null 和 undefined 付给其他类型let nandb:number|boolean;
nandb =true// nandb = null; // Type 'null' is not assignable to type 'number | boolean'.console.log('6. null 和 undefined', nandb)
7. void类型
// 只能接受null,undefined。一般用于函数的返回值 (严格模式下不能将null赋予给void)letvoid类型:void;void类型 =undefined;// void类型 = null; // strictNullChecks: false (不严格模式) 才不报错// void类型 = true; // Type 'boolean' is not assignable to type 'void'.console.log('7. void类型',void类型)
8. never类型
// 任何类型的子类型, never 代表不会出现的值。不能把其他类型赋值给neverfunctionerror(message:string):never{thrownewError("err");}functionloop():never{while(true){}}functionfn(x:number|string){if(typeof x =='number'){}elseif(typeof x ==='string'){}else{console.log(x);// never}}console.log('8. never类型', error, loop, fn)