TypeScript入门:五分钟学会基础类型

114 阅读3分钟

大家好,我是前端理想哥,从今天开始,我将录制一系列视频讲解TypeScript,帮助初学者同学可以快速上手TypeScript

今天我们讲第一节课:TypeScript的基础类型

我们都知道JS有7 种基本数据类型,包括string、number、boolean、undefined、Symbol、null、BigInt,还有引用类型Object

TypeScript 支持与JS几乎相同的数据类型,还提供了一些枚举类型,接下来,我们一个个看下。

第一种,布尔值

就是简单的 true/false。在ts中的写法也很简单

const isLast: boolean = true;

第二种是数字

十进制、十六进制、二进制和八进制TypeScript中都是支持的。就像这样:

const max: number = 10;
const max: number = 0xf00d
let max: number = 0b1010;
let max: number = 0o744;

第三种是字符串

很简单,像这样:

const name: string = 'Jay'

也可以使用模板字符串

const nameInfo = `hello, my name is ${name}`

第四种是数组

我们有两种方式可以定义数组,第一种是在元素类型后面接上中括号,像这样:

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

第二种是使用数组泛型,就像这样:

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

第一种方法是比较常用的。

第五种是元组

元组可以用来表示一个已知的元素数量和类型的数组,像这样:

const list: [string, number];

当我们定义和list中括号中类型一样的数据时,可以正常展示,

list = ['hello', 10]

当我们定义的数据类型和ist中括号中不一致,就会有报错提示了

list = [10, 'hello']

第六种是枚举enum

这是js标准数据类型的一个补充,我们经常会使用enum来定义常量。

enum UserLevelCode {
    Visitor = 10001,
    NonVIPUser = 10002,
    VIPUser = 10003,
    Admin = 10010,
}

第七种是 any

当我们对一些变量的类型不清楚时,我们不希望类型检查器对这些值进行检查,可以使用any

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

在这段代码中,我们给notSure定义了any类型,表示它可以是任意类型的值,接下来,我们将它分别改成了string和boolean,你会发现,并没有任何报错。

但是,我们尽量还是少用any,因为这样会失去使用typescript的意义。

第8种:Void

Void表示没有任何类型,当一个函数没有返回值时,通常会见到其返回值类型是 void:

function getName(): void {
 console.log("没有任何返回");
}

这种一般不常用

第9种,NullUndefined

在TypeScript中undefined和null两者各自有自己的类型,分别叫做undefined和null

let x: undefined = undefined;
let y: null = null;

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

第10种:Never

never类型表示的是那些永不存在的值的类型,函数表达式或者变量都可以设置never类型,使用never给函数表达式赋值时,该函数表达式要是抛出异常的,或者不会有返回值的。就像这样

function error(message: string): never {
    throw new Error(message);
}

第11种,Object

使用object类型,就可以更好的表示像Object.create这样的API。例如:

declare function create(o: object | null): void;

create({ prop: 0 }); // OK

create(42); // Error
create("string"); // Error

第12种,是定义set和map类型

写起来也很简单,就像这样:

const set: Set<number> = new Set();
set.add(1);

const map: Map<string, number> = new Map();
map.set("a", 1);

最后,我们来看下类型断言

如果你确定的知道,某个变量的具体类型,那么我们可以通过类型断言告诉编译器,这个类型我是知道的,一般我们会用as语法

就像这样:

elements.forEach(element => {
    element = (element as number) + 1
})

以上,就是本节课的所有内容了,欢迎大家点赞支持一下。我们下篇文章再见。