基础类型

  1. let isDone: boolean = false
  2. let num: number = 2
  3. // num = '2' 报错
  4. let str: string = 'bob'
  5. str = 'smith'
  6. let list: number[] = [1, 23, 45]
  7. let arrayList: Array<number> = [1, 2, 2, 3]

元祖 Tuple

  • 元祖类型允许表示一个已知元素数量和类型的数组,各元素的类型不必相同。

    1. let x: [string, number]
    2. x = ['hello', 10] //ok
    3. // x = [10,'str'] //不能将类型“string”分配给类型“number”
    4. console.log(x[0].substr(1));//ello
    5. // console.log(x[1].substr(1)); //类型“number”上不存在属性“substr”
    6. // 当访问一个越界元素,会使用联合类型替代
    7. // x[3] = 'world'
    8. // x[4].toString()

    枚举

  • 是对JavaScript标准数据类型的一个补充

    1. enum Color { Red, Green, Blue }
    2. let c: Color = Color.Green // 1
    3. // 默认情况下从0开始为元素编号,也可以手动指定成员的数值
    4. enum Colors { Red = 1, Green, Blue }
    5. let colorName: string = Colors[2]
    6. console.log(colorName); //Green

    Any

  • 编程阶段不清楚类型,可用any

    1. let notSure: any = 4
    2. notSure = 'str'
    3. notSure = false
    4. notSure = 2
    5. notSure.toFixed() //toFixed存在 不报错
    6. let obj: Object = 4
    7. // obj.toFixed() //类型“对象”上不存在属性“ toFixed”

    Void

  • 与any相反,便是没有任何类型,当一个函数没有返回值的时候常见

    1. function warnUser(): void {
    2. console.log('this is my warning message');
    3. }
    4. // 声明一盒void类型没有什么大用,因为他只能赋予 undefined 和 null
    5. let unusable: void = undefined

    Object

    1. declare function create(o: object | null): void
    2. create({prop:0})
    3. create(null)
    4. // create(1) error
    5. // create('1') error
    6. // create(undefined) error

    类型断言

  • 通常这会发生在你清楚地知道一个实体具有比它现有类型更确切的类型

    1. let someValue: any = "this is a string";
    2. let strLength: number = (<string>someValue).length;
    3. {
    4. let someValue: any = "this is a string";
    5. let strLength: number = (someValue as string).length;
    6. }

    联合类型

    1. let someValue: number | string;

    Null Undefinde

  • TypeScript里,undefinednull两者各自有自己的类型分别叫做undefinednull。 和 void相似,它们的本身的类型用处不是很大。

    Never

  • 表示那些永不存在的值的类型

  • 例如, never类型是那些总是会抛出异常或根本就不会有返回值的函数表达式或箭头函数表达式的返回值类型;
  • 变量也可能是 never类型,当它们被永不为真的类型保护所约束时。
    1. function error(message: string): never {
    2. throw new Error(message);
    3. }
    4. // 推断的返回值类型为never
    5. function fail() {
    6. return error("Something failed");
    7. }
    8. // 返回never的函数必须存在无法达到的终点
    9. function infiniteLoop(): never {
    10. while (true) {
    11. }
    12. }