基础类型

注:本笔记参考TypeScript中文网。https://www.tslang.cn/index.html

TypeScript支持JavaScript几乎相同的数据类型,此外还提供实用的枚举类型。JavaScript的内容请参考JavaScript相关章节。

布尔值(boolean)

例子:

let a:boolean = false;

数字(number)

所有数字都是浮点数,类型是number,支持十进制,十六进制,二进制,八进制字面量。

例子:

let a:number = 3;
let a:number = 0xf0dd;

字符串(string)

可以使用单引号和双引号表示字符串字面量。

例子:

let s:string = "hello";

还可以使用模板,带模板的字符串使用反引号,如:

let s:string=`I'll be ${age + 1} years old next month`; //其中age是个变量

数组(Array)

简单的数组定义:

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

使用泛型数组:

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

泛型规定了这个数组只接受number类型的元素。

元组(Tuple)

元组类型表示一个已知元素数量和类型的数组。

定义tuple:

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

注意:

  • 和Python的元组不可更改不同,TypeScript的tuple实际上就可以看成JavaScript数组,可以更改,可以动态添加元素,但是添加的元素必须是符合联合类型的。
  • 当访问越界的元素时会使用联合类型替代。

枚举(enum)

定义枚举:

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

默认情况下,从0开始为元素编号。也可以全部使用手动编号。

任意值(any)

使用any:

let notSure: any = 4;
notSure = "maybe a string instead";
notSure = false; // okay, definitely a boolean

any类型可以避免编译器类型检查。在必须使用动态类型时,可以使用any。

注意:any就像Java中使用Object类型一样,但是TypeScript(JavaScript)中Object却不能这样使用,因为声明为Object类型就不能调用具体类型的方法了。

空值(void)

void与any相反,表示没有任何类型,函数没有返回值时,可以声明返回值类型为void。

声明为void的变量,只能赋值null和undefined。

null和undefined

null和undefined也是类型,他们的值就只能是null和undefined,他们是所有类型的子类,因此也可以赋值给number等。

Never

never表示永远不存在的值的类型。用在总是会抛出异常或根本不存在的函数表达式。

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

类型断言

通过类型断言告诉编译器,你已经确定了这个变量的类型,例如可以把any转换成string,相当于Java的类型向下转型。

let a:any = "hello";
let b:string = (a as string);

变量声明

var是旧JavaScript的声明变量的方式,新的EcmaScript 规定了let和const取代var,let具有块级作用域,const则是在let基础上声明常量,常量是不可更改的。

通常,建议使用let和const,因为其他大部分语言都是具有块级作用域和常量的,var声明使用不当会造成难以发现的bug。

作者:Gacfox
版权声明:本网站为非盈利性质,文章如非特殊说明均为原创,版权遵循知识共享协议CC BY-NC-ND 4.0进行授权,转载必须署名,禁止用于商业目的或演绎修改后转载。
Copyright © 2017-2024 Gacfox All Rights Reserved.
Build with NextJS | Sitemap