这是我参与「第五届青训营」伴学笔记创作活动的第 3 天,过年期间没怎么学,之前对于typescript只是稍有些了解,如今的项目中需要用到ts,所以从最基础的地方开始学起。
什么是 TypeScript
TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6 的支持。TypeScript 编译后的结果就是纯粹的 JavaScript,可以在任何支持 JavaScript 的环境中运行。
TypeScript 是一门静态类型语言,之所以强调这一点是因为这是将它与 javaScript 区分开的最重要的特征。静态类型语言的类型检查是在编译阶段完成的,而不是在运行时。这意味着 TypeScript 可以在编译阶段就发现大部分错误,而不是在运行时才发现。
TypeScript 的优势
- 程序的可读性增强
- 更少的错误,在编译期间就可以找到许多低级错误。
- 更好的 IDE 支持,包括代码补全、接口提示、跳转到定义等。
- 有很好的包容性。
一段简单的 Hello World 代码:
const hello = (name: string) => {
return `hello ${name}`;
};
hello(`xxx`);
数据类型
在 TypeScript 中,我们可以使用 number、string、boolean、null、undefined、数组、元组、枚举、any、void、never、object、symbol、bigint 来定义数据类型。
基础类型
let isDone: boolean = true;
let age: number = 21;
let brinaryNumber: number = 0b1010;
let student: string = `sw`;
let intro: string = `hello, ${student}, age is ${age}`;
let un: undefined = undefined;
let nu: null = null;
any 类型
any 类型, 可以任意调用方法和属性,在明确类型的情况下尽量不要使用,以免引入不必要的错误。
let input: any = 12;
input = `string`;
input = true;
联合类型
联合类型可以使用 | 来表示多个类型。
let numberOrString: number | string = 123;
numberOrString = `string`;
数组
let arrOfNumbers: number[] = [1, 2, 3, 4];
arrOfNumbers.push(5);
元组
元组是固定长度的数组, 元组中每个元素的类型可以不同。
let user: [string, number] = [`sw`, 231];
这里只对一些相对基础的类型进行了介绍, 以便于后续的学习。
interface 接口
接口(Interfaces)是 TypeScript 的一个重要概念,它是对行为的抽象,定义一个对象应当长成什么样子。 下面是一个简单的接口实现。
interface Person {
//属性
readonly id: number;
name: string;
age: number;
sex?: string; //可选属性
}
let sw: Person = {
id: 1234,
name: "sw",
age: 21,
};