TypeScript学习基础-持续更新...

110 阅读3分钟

一、安装TypeScript

有两种主要的方式来获取TypeScript工具:

  • 通过npm(Node.js包管理器)

  • 安装Visual Studio的TypeScript插件

    npm install -g typescript
    

二、技能点

**

  • ****类型注解
    TypeScript里的类型注解是一种轻量级的为函数或变量添加约束的方式。

**

  1. 布尔值

    let isDone: boolean = false;
    
  2. 数字
    TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number

    let decLiteral: number = 6;
    let hexLiteral: number = 0xf00d;
    let binaryLiteral: number = 0b1010;
    let octalLiteral: number = 0o744;
    
  3. 字符串
    ① 使用双引号( ")或单引号(')表示字符串。

    let name: string = "bob";
    

    ② 使用模版字符串,它可以定义多行文本和内嵌表达式。

    let name: string = `Gene`;
    let age: number = 37;
    let sentence: string = `Hello, my name is ${ name }. 
        I'll be ${ age + 1 } years old next month.`;
    
    let sentence: string = "Hello, my name is " + name + ".\n\n" +
        "I'll be " + (age + 1) + " years old next month.";
    
  4. 数组
    ① 在元素类型后面接上 [],表示由此类型元素组成的一个数组。

    let list: number[] = [1, 2, 3];
    

    ② 使用数组泛型,Array<元素类型>

    let list: Array<number> = [1, 2, 3];
    
  5. 元祖Tuple
    元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

    let x: [string, number];
    
  6. 枚举
    enum类型是对JavaScript标准数据类型的一个补充。

    enum Color {Red, Green, Blue}
    let c: Color = Color.Green;
    

    默认情况下,从0开始为元素编号。
    枚举类型提供的一个便利是你可以由枚举的值得到它的名字。

    enum Color {Red = 1, Green, Blue}
    let colorName: string = Color[2];
    
    console.log(colorName);  // 显示'Green'因为上面代码里它的值是2
    
  7. Any
    在对现有代码进行改写的时候,any类型是十分有用的,它允许你在编译时可选择地包含或移除类型检查。

  8. Void
    某种程度上来说,void类型像是与any类型相反,它表示没有任何类型。

  9. Null 和 Undefined
    默认情况下nullundefined是所有类型的子类型。

    let u: undefined = undefined;
    let n: null = null;
    
  10. Never
    never类型表示的是那些永不存在的值的类型。
    never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

    // 返回never的函数必须存在无法达到的终点 function error(message: string): never { throw new Error(message); }

    // 推断的返回值类型为never function fail() { return error("Something failed"); }

    // 返回never的函数必须存在无法达到的终点 function infiniteLoop(): never { while (true) { } }

  11. Object
    object表示非原始类型,也就是除numberstringbooleansymbolnullundefined之外的类型。
    使用object类型,就可以更好的表示像Object.create这样的API。

    declare function create(o: object | null): void;

    create({ prop: 0 }); // OK create(null); // OK

    create(42); // Error create("string"); // Error create(false); // Error create(undefined); // Error

  • **类型断言
    **类型断言有两种形式。 其一是“尖括号”语法:

    let someValue: any = "this is a string";
    
    let strLength: number = (<string>someValue).length;
    

    另一个为as语法:
    **

    let someValue: any = "this is a string";
    
    let strLength: number = (someValue as string).length;
    

    **