1. 任意类型,关键字 any
      1. 要注意的是,过度使用 any 类型和双重类型断言可能会降低ts的类型安全性,从而使我们失去使用ts的主要优点
    2. 数字类型,关键字 number
    3. 字符串类型,关键字 string
    4. 布尔类型,关键字 boolean
    5. 数组类型,没有关键字
      1. 在元素类型后面加上[],比如 number[]string[]
      2. 使用数组泛型 Array<number>Array<string>
    6. 元组类型,没有关键字
      1. 元组类型用来表示已知元素数量和类型的数组,各元素的类型不必相同,对应位置的类型需要相同
      2. const x:[number, string] = [1, 'a'] 约束 x 是一个元组类型,只能存在两个成员,且第一个成员必须是数字类型,第二个成员必须是字符串类型
    7. 枚举类型,关键字 enum
      1. 枚举类型用于定义数值集合
    8. void 类型,关键字 void
      1. void 用于标识方法返回值的类型,表示该方法没有返回值
    9. null 类型,关键字 null
      1. null 表示对象值缺失
    10. undefined 类型,关键字 undefined
      1. undefined 用于初始化变量为一个未定义的值
    11. never 类型,关键字 never
      1. never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值
    12. Any 任意值是 ts 针对编程时类型不明确的变量使用的一种数据类型
    13. 任意值类型可以让变量跳过编译阶段的类型检查
    1. let x1: any = 1; // 数字类型
    2. x1 = 'I am who I am'; // 字符串类型
    3. x1 = false; // 布尔类型
    4. let x2: any = 4;
    5. x2.ifItExists(); // 正确,ifItExists方法在运行时可能存在,但这里并不会检查
    6. x2.toFixed(); // 正确
    7. // 定义存储各种类型数据的数组
    8. let arrayList: any[] = [1, false, 'fine'];
    9. arrayList[1] = 100;
    1. Null 和 Undefined 是其他任何类型(包括 void)的子类型,可以赋值给其它类型,如数字类型,此时,赋值后的类型会变成 null 或 undefined
    2. 在 ts 中启用严格的空校验--strictNullChecks特性,就可以使得 null 和 undefined 只能被赋值给 void 或本身对应的类型
    1. // 启用 --strictNullChecks
    2. let x1: number;
    3. x1 = 1; // 编译正确
    4. x1 = undefined; // 编译错误
    5. x1 = null; // 编译错误
    6. // 启用 --strictNullChecks
    7. let x2: number | null | undefined;
    8. x2 = 1; // 编译正确
    9. x2 = undefined; // 编译正确
    10. x2 = null; // 编译正确
    1. never 是其它类型(包括 null 和 undefined)的子类型,代表从不会出现的值
    2. 声明为 never 类型的变量只能被 never 类型所赋值
    1. let x: never;
    2. let y: number;
    3. // 编译错误,数字类型不能转为 never 类型
    4. x = 123;
    5. // 运行正确,never 类型可以赋值给 never类型
    6. x = (()=>{ throw new Error('exception')})();
    7. // 运行正确,never 类型可以赋值给 数字类型
    8. y = (()=>{ throw new Error('exception')})();
    9. // 返回值为 never 的函数可以是抛出异常的情况
    10. function error(message: string): never {
    11. throw new Error(message);
    12. }
    13. // 返回值为 never 的函数可以是无法被执行到的终止点的情况
    14. function loop(): never {
    15. while (true) {}
    16. }
    1. ts 中变量的命名规则和 js 中一致
    2. 在 ts 中声明变量的同时,可以指定变量的数据类型 let <变量名>: <类型>
    1. var uname: string = "Runoob";
    2. var score1: number = 50;
    3. var score2: number = 42.50
    4. var sum = score1 + score2
    5. console.log("名字: " + uname)
    6. console.log("第一个科目成绩: " + score1)
    7. console.log("第二个科目成绩: " + score2)
    8. console.log("总成绩: " + sum)
    9. // 名字: Runoob
    10. // 第一个科目成绩: 50
    11. // 第二个科目成绩: 42.5
    12. // 总成绩: 92.5