标签:red OLE 操作 bool fun 识别 null return asa
let isDone:boolean=true; let num:number=6; let str:string=‘asd‘; let u:undefined=undefined; let n:null=null; // 空值 ,用void表示没有任何返回值的函数 function test():void{ alert(‘122‘); } // void 类型的变量只能赋值为 undefined 和 null let unusable:void=undefined; // undefined,null是所有类型的子类型,可以赋值给其他类型的变量 num=null; console.log(num);//null
//1. any类型,允许被赋值为任意类型, let num:any=7; num=‘123‘; // 2.声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。 let obj:any={}; obj.name=‘11‘ console.log(obj.name); // 3.变量如果在声明的时候,未指定其类型,会被识别为任意值类型 let a; a=‘bbb‘; a=1111;//success let str=‘aaa‘; str=123;//error 类型错误
let str=‘aaaaa‘;//等价于 let str:string=‘aaaaa‘; str=123;//error // 如果定义的时候没有赋值,不管之后有没有赋值,都会被推断成 any 类型而完全不被类型检查: let num; num=‘aaa‘; num=111;//success
4.联合类型
// 1.联合类型的变量在被赋值的时候,会根据类型推论的规则推断出一个类型: let str:string|number; str=‘abc‘; console.log(str.length);//3 str=123; console.log(str.length);//error: Property ‘length‘ does not exist on type ‘number‘ //2. 只能访问此联合类型的所有类型里共有的属性或方法: function test(params:string|number):string{ return params.toString(); }
//1.接口一般首字母大写,赋值的时候,变量的形状必须和接口的形状保持一致 interface Person{ name:string; age:number; } let test:Person={ name:‘sy‘, age:12 } // 2.可选属性 ?:属性可以不存在,但是不允许添加未定义的属性 interface Person{ name:string; age?:number; } let test:Person={ name:‘123‘, color:‘red‘//error ... ‘color‘ does not exist in type ‘Person‘. } // 3.任意属性 interface Person{ name:string; age?:number; [propName:string]:any; } let test:Person={ name:‘sy‘, color:‘red‘ } // // 一旦定义了任意属性,那么确定属性和可选属性都必须是它的子属性: interface Person1{ name:string; age?:number; [propName:string]:string;//error:任意属性的值允许是 string,但是可选属性 age 的值却是 number,number 不是 string 的子属性,所以报错了 } // 4.只读属性:readonly interface Person{ readonly id:number; name:string; age?:number; [prop:string]:any; } let test:Person={ id:123, name:‘sy‘, sex:‘woman‘ } test.id=11;//error:Cannot assign to ‘id‘ because it is a constant or a read-only property. // 只读的约束存在于第一次给对象赋值的时候,而不是第一次给只读属性赋值的时候 let person:Person={ name:‘aa‘,// error:Property ‘id‘ is missing in type ‘{ name: string }‘ } person.id=11;//error:Cannot assign to ‘id‘ because it is a constant or a read-only property.
6.数组的类型
//1. 使用「类型 + 方括号」来表示数组 let arr:number[]=[1,2,3]; // 数组中不允许出现其他类型 let arr1:number[]=[1,2,3,‘a‘];//error: Type ‘string‘ is not assignable to type ‘number‘. let arr2:(number|string)[]=[1,2,3,‘a‘];//联合类型 // 2.使用数组泛型 Array<elemType> 来表示数组: let arr:Array<number>=[1,2,3]; // 3.用接口表示数组 interface NumberArray{ [index:number]:number; } let arr1:NumberArray=[1,2,3]; // 4.any 表示数组中允许出现任意类型 let list:any=[1,‘asas‘,{name:‘sy‘}]; // 5.类数组 // 常见的类数组都有自己的接口定义,如 IArguments, NodeList, HTMLCollection 等: function sum(){ let args:IArguments=arguments; let arr:number[]=arguments;//error:Property ‘push‘ is missing in type ‘IArguments‘. }
标签:red OLE 操作 bool fun 识别 null return asa
原文地址:https://www.cnblogs.com/yuesu/p/9964674.html