深入浅出TypeScript 笔记 | 青训营

67 阅读3分钟

在今天的课程中,我们学习了TypeScript的一些基础知识和基本语法。

  1. 为什么要学习TypeScript

image.png 总结TS:

  • TS是JS的扩展,是超集
  • TS也能编译成JS运行
  • 可以在编译期间发现,纠正错误
  • 支持静态代码检测
  • 支持后端语言中的一些相关特性

TS教程推荐:

TS开源教程及应用:dzharii/awesome-typescript: A collection of awesome TypeScript resources for client-side and server-side development. Write your awesome JavaScript in TypeScript (github.com)

TS到JS在线编译:TypeScript: TS Playground - An online editor for exploring TypeScript and JavaScript (typescriptlang.org)

  1. TypeScript基础

image.png 使用enum关键字来定义一个枚举类型。例如:

enum Direction {
  Up,
  Down,
  Left,
  Right,
  //当然,它们也可以被手动赋值,如Up=1
}

// 使用枚举
let userDirection: Direction = Direction.Up;
console.log(userDirection); // 输出: 0

如果枚举中的成员被赋予了值,那么其后续成员将会在前一个成员的基础上自动递增。 TypeScript的枚举还支持反向映射。这意味着可以通过枚举值获取对应的枚举成员名称。

never类型表示不可能出现的值或不会被执行的代码路径。在实践中,它常用于处理异常、错误、或者其他无法正常返回的情况。使用never类型有助于增加代码的可读性和类型安全性。

元组(Tuple)类型允许定义一个固定长度且类型可以不同的数组。元组是一种特殊的数组类型,它限制了数组中元素的数量和每个元素的类型。例如:

let myTuple: [string, number, boolean];
myTuple = ["hello", 42, true];

image.png

image.png

接口举例:

interface Person {
  name: string;
  age: number;
  sayHello: () => void;
}
class Student implements Person {
  name: string;
  age: number;

  constructor(name: string, age: number) {
    this.name = name;
    this.age = age;
  }

  sayHello() {
    console.log(`Hi, my name is ${this.name}, and I am ${this.age} years old.`);
  }
}

image.png

protected定义的属性只有在继承类里才能被调用,它生成的一些实例是不可以被调用的。

继承举例:

class Animal {
  name: string;

  constructor(name: string) {
    this.name = name;
  }

  makeSound() {
    console.log("Some generic sound");
  }
}

class Dog extends Animal {
  constructor(name: string) {
    super(name); // 调用父类的构造函数
  }

  makeSound() {
    console.log("Woof! Woof!");
  }
}
  1. TypeScript进阶

image.png

使用interface来定义对象的结构和类的实现更直观,它适合于创建可读性强、语义明确的类型定义。而type则更灵活,支持复杂的类型组合,适用于创建复杂的联合类型、交叉类型或通用类型别名。在实际使用中,可以根据具体场景和需求来选择使用哪种类型定义方式。

泛型(Generics)是一种在编程语言中用于创建可重用、灵活和类型安全的组件的概念。在不同编程语言中,泛型的实现可能会有所不同,但它们都共享相似的目标:增加代码的灵活性和可重用性,同时保持类型安全性。

image.png

image.png

image.png

keyof是一个类型操作符,用于获取给定类型的所有键(属性名)组成的联合类型。

interface Person {
  name: string;
  age: number;
  address: string;
}

type PersonKeys = keyof Person; // 类型为 "name" | "age" | "address"

image.png

  1. 实战&工程向

image.png 三方库是一种已经构建好的、可复用的代码资源,开发者可以直接在自己的项目中引用和使用这些库,而不需要从头开始编写相同的功能。这样可以大大提高开发效率和代码质量,避免重复造轮子。

三方库通常提供了许多功能,如日期处理、字符串操作、网络请求、数据可视化、数据库访问、机器学习等。开发者可以根据自己的需要选择适合的三方库,并通过包管理工具(如NPM、NuGet、Maven等)来安装和管理这些库。

一些著名的三方库包括React、Vue.js、Angular(前端框架)、Lodash(实用工具库)、Axios(HTTP客户端)、Express(Node.js框架)等。这些库为开发者提供了大量的功能和便利,帮助开发者更轻松地构建复杂的应用程序。