TypeScript 基础数据类型简介

叁歲伎倆 2022-06-13 01:38 295阅读 0赞

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

一、布尔值 boolean

  1. //布尔类型
  2. let idDone: boolean = false;

二、数字 number

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

  1. //数字类型
  2. let decLiteral: number = 7;
  3. let hexLiteral: number = 0xf00d;
  4. let binaryLiteral: number = 0b1010;
  5. let octalLiteral: number = 0o744;

三、字符串 string

和JavaScript一样,可以使用双引号( ")或单引号(')表示字符串。

  1. //字符串
  2. let name: string = 'bob';
  3. name = "smitch";

扩展功能模板字符串, ${ expr },这种方式类似C#6.0中的字符串拼接方法。

不同的是在JavaScript中需要使用反引号(`)将,字符串包裹。

  1. let sentence: string = `name=“${name}”,decLiteral="${decLiteral * 10}"`; //使用模板字符串,需要使用反引号包裹
  2. console.info(sentence);

四、数组

和JavaScript一样可以使用两种方式定义数组

1.number []

  1. let list: number[] = [1, 3, 2];
  2. console.info(list);
  1. Array<元素类型>
  1. let list2: Array<number> = [4, 5, 6];
  2. console.info(list2);

五、元组 Tuple

元组类型允许表示一个一直元素数量和类型的数组,各元素类型不必相同

  1. //元组Tuple
  2. let x: [string, number];
  3. x = ['hello', 10];
  4. //x=[10,'hello']; //编译时出错,与元组对应类型不相同
  5. console.info(x[0].substr(1));
  6. x[3] = 'world';
  7. console.log(x[5]); //编译不会出错,运行出错,因为x[5]没有赋值为undefined
  8. //x[6] = true; //编译出错,boolean不是number或string类型
  9. x[6]=100;
  10. console.info(x); //说明元组中为undefined的属性序列化的时候不会显示

六、枚举 enum

enum类型是对JavaScript标准数据类型的一个补充,用法同C#基本类似。

  1. //使用方式同C#相同,不指定编号则从0开始
  2. enum Color{
  3. Red,
  4. Green,
  5. Blue
  6. }
  7. let c:Color=Color.Green; //输出枚举的值:1
  8. console.info(c);
  9. console.info(Color[2]); //获取枚举值对应的字符串定义
  10. console.info(Color);

七、特殊数据类型

1.Any

使用any类型标记的变量,编译时不检查类型,运行时检查。

  1. //Any
  2. let notSure:any=4;
  3. console.info(notSure.toFixed(2)); //正常输出:4.00
  4. notSure='Are you sure?';
  5. notSure=false;
  6. // console.info(notSure); //正常输出false
  7. console.info(notSure.toFixed(2)); //编译不报错,运行时报错

2.Void

某种程度上来说,void类型和any类型相反,它表示没有任何类型。主要用户函数的空返回。

void类型可以赋值为null或者undefined

  1. //Void 类型
  2. let unusable: void = undefined;
  3. console.info(unusable);
  4. function warnUser(): void {
  5. alert('This is my waring message.');
  6. }

3.Null 和 Undefined

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

4.Never

never类型表示的是那些永不存在的值的类型。

never类型是任何类型的子类型,也可以赋值给任何类型;然而,没有类型是never的子类型或可以赋值给never类型(除了never本身之外)。 即使 any也不可以赋值给never

  1. // 返回never的函数必须存在无法达到的终点
  2. function error(message: string): never {
  3. throw new Error(message);
  4. }
  5. // 推断的返回值类型为never
  6. function fail() {
  7. return error("Something failed");
  8. }
  9. // 返回never的函数必须存在无法达到的终点
  10. function infiniteLoop(): never {
  11. while (true) {
  12. }
  13. }

八、类型断言
类型断言好比其它语言里的类型转换,但是不进行特殊的数据检查和解构。 它没有运行时的影响,只是在编译阶段起作用。

两种形式是等价的。 至于使用哪个大多数情况下是凭个人喜好;然而,当你在TypeScript里使用JSX时,只有 as语法断言是被允许的。

  1. //类型断言
  2. let someValue: any = 'this is a string';
  3. let strLenth: number = (<string>someValue).length;
  4. console.info(strLenth);
  5. let value2: any = 11;
  6. let num1: string = (value2 as number).toFixed(2);
  7. console.info(num1);

更多:

TypeScript 变量声明

TypeScript开发环境搭建-Visual Studio Code

  1. [TypeScript 简介整理][TypeScript 1]

发表评论

表情:
评论列表 (有 0 条评论,295人围观)

还没有评论,来说两句吧...

相关阅读