zoukankan      html  css  js  c++  java
  • TypeScript 基础类型

    TypeScript 支持与 JavaScript 几乎相同的数据类型,此外还提供了枚举类型。

    布尔值(boolean)

    let isDone: boolean = false;
    

    也可这样写

    let isDone: boolean = Boolean(1)
    

    但是需要注意,一下写法返回的是 Boolean 对象,非 boolean 类型

    let isDone: Boolean = new Boolean(1)
    

    可通过 .valueOf() 方法获取实际的 boolean 类型

    数字(number)

    和JavaScript一样,TypeScript里的所有数字都是浮点数。 这些浮点数的类型是 number。 除了支持十进制和十六进制字面量,TypeScript还支持ECMAScript 2015中引入的二进制和八进制字面量。

    let decLiteral: number = 6;
    let hexLiteral: number = 0xf00d;
    let binaryLiteral: number = 0b1010;
    let octalLiteral: number = 0o744;
    

    字符串(string)

    可使用双引号(")或单引号(')表示字符串。

    let name: string = "bob";
    name = "smith";
    

    还可使用模板字符串,来定义多行文本ho或内嵌表达式,使用(`)包围,并以 ${expr} 嵌入表达式。

    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.`;
    

    数组(Array)

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

    数组泛型

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

    元组(Tuple)

    元组类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。 比如,你可以定义一对值分别为 string和number类型的元组。

    // Declare a tuple type
    let x: [string, number];
    // Initialize it
    x = ['hello', 10]; // OK
    

    当访问一个已知索引的元素,会得到正确的类型。

    console.log(x[0].substr(1)); // OK
    

    枚举(enum)

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

    默认情况下,从0开始为元素编号。 你也可以手动的指定成员的数值。 例如,我们将上面的例子改成从 1开始编号:

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

    或者,全部都采用手动赋值:

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

    通过枚举值获取枚举的名称。

    enum Color {Red = 1, Green, Blue}
    let colorName: string = Color[2];
    
    console.log(colorName);  // 显示'Green'因为上面代码里它的值是2
    

    任意值(any)

    已声明类型的普通类型,在代码执行过程中,不允许改变类型。

    let myFavoriteNumber: string = 'seven';
    myFavoriteNumber = 7;
    
    // index.ts(2,1): error TS2322: Type 'number' is not assignable to type 'string'.
    

    如果定义为 any 类型,则可更改变类型。

    let myFavoriteNumber: any = 'seven';
    myFavoriteNumber = 7;
    

    声明一个变量为任意值之后,对它的任何操作,返回的内容的类型都是任意值。

    无返回值(void)

    一般用于 function 无返回值情况。

    function warnUser(): void {
        console.log("This is my warning message");
    }
    

    此类型用于变量什么无实际意义,因为你只能为它赋予 undefined 和 null。

    let u: void;
    let num: number = u;
    
    // Type 'void' is not assignable to type 'number'.
    

    Null 和 Undefined

    默认情况下 null 和 undefined 是所有类型的子类型。 就是说你可以把 null 和 undefined 赋值给 number 类型的变量

    let u: undefined = undefined;
    let n: null = null;
    let num: number = undefined;
    
    let u: undefined;
    let num: number = u;
    

    Object

    object 表示非原始类型,也就是除 number,string,boolean,symbol,null 或 undefined 之外的类型。

    使用 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
    

    类型断言

    清楚的知道一个变量的值,可使用类型断言。

    通过类型断言这种方式可以告诉编译器,“相信我,我知道自己在干什么”。 类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。 TypeScript 会假设你,程序员,已经进行了必须的检查。

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

    等价写法(as 语法),当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

    let someValue: any = "this is a string";
    
    let strLength: number = (someValue as string).length;
    
  • 相关阅读:
    实例化对象
    面向对象
    合并类动态规划——石子合并(洛谷1880)
    合并类动态规划——能量项链(洛谷1063)
    multiplicationoverview
    cadence 工艺库各文件夹所包含的内容
    C语言读入文件的函数列举
    一篇工程师的感悟(转载)
    验证汇总一些缩写代码含义
    Verilog代码覆盖率检查
  • 原文地址:https://www.cnblogs.com/jintangc/p/15122490.html
Copyright © 2011-2022 走看看