大家好,我是前端理想哥,从今天开始,我将录制一系列视频讲解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种,Null 和 Undefined
在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
})
以上,就是本节课的所有内容了,欢迎大家点赞支持一下。我们下篇文章再见。