TypeScript学习2数据类型

8次阅读

共计 1357 个字符,预计需要花费 4 分钟才能阅读完成。

变量类型

TypeScript 支持的变量类型与 JavaScript 基本一样。另外提供了 枚举类型

这里还是给出一些例子去理解 TypeScript 的变量类型使用,具体的语言知识可以查看文档。

原始类型

// boolean
let success: boolean = true;
// number
let num1: number = 12;
let num2: number = 0xab; // 支持多种进制
// string
let str1: string = 'abc';

除上述示例,还有 null, undefined, symbol 类型,可以参看文档。

数组和元组

数组有两种声明方式:

let arr1: string[] = ['hello', 'world'];
let arr2: Array<string> = ['hello', 'world'];

元组是一种特殊的数组

let arr1: ['string', 'number'] = ['hello', 123];

元组越界时,会以联合类型来处理,具体请查阅文档。

枚举

枚举类型与 C#,Java 语言相比,另外提供了一个便利特性,可以拿到枚举的名称。

enum Color {Red = 1, Green, Blue}
let colorName: string = Color[2];

console.log(colorName);  // 显示 'Green' 因为上面代码里它的值是 2 

any, void

  • any 表示任意类型,可以在类型不确定时使用(能不用就不要用),如:

    • 第三方的返回值,你无法确定类型
    • 你不确定你将会用到哪些类型
  • void 正好相反,表示没有类型,一般用于没有返回值的函数

null, undefined

  • 类型定义和 JavaScript 一致
  • TypeScript 里面,可以赋给:本身类型、any、void

object

object 类型是基本的 6 个类型之外的其他类型的基类。

使用时需注意,用 object 声明时,后面只能当 object 使用,如:

let a: object = new Date();
a.hasOwnProperty('name'); // ok
a.getDate(); // error

never

never 是个比较特殊的类型,表示永远不会到达。

典型的场景就是异常抛出函数的返回值。

function bizError(code: number, msg: string): never {
   throw new Error({
       code,
       msg
   }); 
}

类型断言

类型断言,我觉得也可以理解为强制类型转换。

这个特性和强类型语言类型,看几个例子理解一下:

// 尖括号式
let var1: any = 'abc';
console.log((<string>var1).substring(1));

// as
let var2: object = new Array<number>();
console.log((var2 as Array<number>).push(1));

类型推断

有些情况下,不需要指明变量类型,TypeScript 可以根据上下文自动推断类型。如下示例:

let a = 'abc';
console.log(a.substring(1));

let obj1 = {
    str1: 'abc',
    num1: 123
};

let {str1, num1} = obj1;

参考

  1. TypeScript 语言手册 https://www.tslang.cn/docs/ha…
正文完
 0