TypeScript基础知识-基本类型(一)
// 字符 - 模板字符串 占位符 let a: string = "a"; let b: string = "b";
// number数组
let devLiteral: number = 6; // 6 let hexLiteral: number = 0x12; // 18 let binaryLiteral: number = 0b11; // 3 let octalLiteral: number = 0o11; // 8
// Boolean let isBoolean1: boolean = true;
// Array 数据类型+[]、泛型数组 let arr1: string[] = ["test1", "test2", "test3"]; let arr2: Array<string> = ["test1", "test2", "test3"];
// 上述两种方式定义数组类型约束了数组内的元素类型必须一致 // 元祖 Tuple 放宽数据内数据类型 - 已知元素的数量与类型的数组 // tuple 数组类型必须与规定的类型顺序对应起来 let tuple1: [string, number]; tuple1 = ["test", 1]; // tuple1[3] = 'a'; // error
// enum 枚举 给数字更加易懂的名字, 能够同时经过索引或者字符访问 // 默认状况下,从0开始为一个元素编号 enum Color { blue, red, yellow } let colorName: string = Color[2]; // yellow enum Color { Red = "RED", Green = "GREEN", Blue = "BLUE" } let colorName2: string = Color["RED"]; console.log(colorName); // 字符串枚举成员不能反向映射到枚举成员的名字
// any 类型 标识JS任意类型的值 // Any类型变量能够被赋值给任何类型数据 // Any类型数据能够赋值给任何数据类型变量(除never外) // 若是是Any类型,那么能够访问它的任意属性 // Any类型对象的任意属性都是Any类型 // Any类型数据能够当作函数或者构造函数调用, 能够有任意参数 // 若是没有给出明确的数据类型,而且编译器没法腿推断,那么将被规定为Any类型 let anyValue: any = 8; anyValue.toFixed(); let obj: { a; b }; // 等同于 let obj: { a: any; b: any; };
// Void类型 沒有返回值 变量值只能是undefined、null // void类型是any的子类型,是null和undefined的父类型 let void1: void = null; let void2: void = undefined; let temp1: any = 1; let void3: void = temp1; let void4: void = void 0; temp1 = void4; // any > void > null、undefined void是any类型的子类型,是null、undefined的父类型 let temp: number; let any: any = '8'; temp = any; // 默认状况下null和undefined是全部类型的子类型,也就是能够 // 赋值给其余任何类型 // 可是不能复制给never类型 // 当指定--strictNullChecks标记,null和undefined只能赋值给void和它们各自,能够避免不少问题 let u: undefined = undefined; let n: null = null; let num: number; num = undefined; num = null;
// Never类型 那些用不存在的值的类型 let neverVar: never; // 老是抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值 // 变量也多是Never类型,当他们被永不为真的类型保护所约束时 // Never类型时任何类型的子类型,能够赋值给任何类型,只有自身能够赋值 // 即便Any类型也不行
// <T>e // e能够赋值给类型为T的变量 // T类型值能够赋值给e的数据类型的widened form的变量 // widened类型根据上下文来推断变量的类型,无需标注 let str5: string = 'testStr5'; let num5: number = <number><any>str5; // 当为变量、属性或者函数推断类型的时候,Widened类型将会被使用。 // 一个类型的Widened形式就是将原始数据中的null或者undefined的数据类型由Any类型替换。
// this指向问题 // 严格模式 非函数模式调用this为undefined,非严格模式this会指向全局对象 // 箭头函数与ES6一致