TS基础

85 阅读4分钟

当下前端开发领域的热门技术 TypeScript 已经成为了许多企业的开发标配,成为了前端开发的一项重要技能。本文将会向你介绍 TypeScript 的基础知识,让你可以快速掌握这门语言。

TypeScript 是什么?

TypeScript 是一种由 Microsoft 开发的开源编程语言,它是 JavaScript 的一个超集,意味着它支持 JavaScript 的所有语法和特性,并增加了静态类型、类、接口等新的特性。

TypeScript 旨在解决 JavaScript 在大型应用开发中存在的问题,比如代码难以维护、没有静态类型检查、没有命名空间等等。TypeScript 的静态类型检查和编辑器提示可以帮助我们在编写代码时避免一些常见的错误,同时也使得代码更加易于理解和维护。

TypeScript 的基本类型

在 TypeScript 中,可以使用以下基本类型:

  • boolean:表示布尔类型,只能为 true 或 false。
  • number:表示数字类型,包括整数和浮点数。
  • string:表示字符串类型。
  • null:表示 null 值。
  • undefined:表示 undefined 值。
  • any:表示任意类型。
  • void:表示没有任何类型。

以下是一些基本类型的使用示例:

let isDone: boolean = false;
let num: number = 42;
let str: string = "Hello, TypeScript!";
let nullable: null = null;
let undef: undefined = undefined;
let anyValue: any = "I can be anything!";
let voidValue: void = undefined;

类型注解和类型推断

TypeScript 中的类型注解是指在变量、函数参数、函数返回值等地方显式地指定类型。类型注解的语法是在变量名或函数名后面加上冒号和类型名称。例如:

let num: number = 42;

function add(x: number, y: number): number {
  return x + y;
}

当我们没有显式地指定类型时,TypeScript 会根据上下文自动推断变量的类型。例如:

let num = 42; // 推断为 number 类型

function add(x: number, y: number) {
  return x + y; // 推断为 number 类型
}

接口

接口是 TypeScript 中用于描述对象形状的一种语法。它定义了一个对象应该具有的属性和方法。例如:

interface Person {
  name: string;
  age: number;
  sayHello(): void;
}

let person: Person = {
  name: "Alice",
  age: 30,
  sayHello: function() {
    console.log("Hello, my name is " + this.name);
  }
};

在上面的代码中,我们定义了一个名为 Person 的接口,它包含 name、age 和 sayHello 三个属性。然后我们创建了一个符合这个接口的对象。

TypeScript 中的类可以使用 class 关键字来定义一个类。类是一种对象模板,它定义了一组属性和方法。例如:

class Animal {
  name: string;

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

  sayHello() {
    console.log("Hello, my name is " + this.name);
  }
}

let cat = new Animal("Tom");
cat.sayHello(); // 输出 "Hello, my name is Tom"

在上面的代码中,我们定义了一个名为 Animal 的类,它包含一个构造函数和一个名为 sayHello 的方法。我们使用 new 关键字来创建一个新的 Animal 对象,并调用它的 sayHello 方法。

泛型

泛型是一种在编写代码时使用未知类型的技术。它可以使代码更加灵活和重用。例如:

function identity<T>(arg: T): T {
  return arg;
}

let str = identity("hello"); // 推断为 string 类型
let num = identity(42); // 推断为 number 类型

在上面的代码中,我们定义了一个名为 identity 的函数,它使用了泛型类型 T。函数的参数和返回值都是泛型类型 T。当我们调用这个函数时,TypeScript 会根据上下文自动推断 T 的类型。

模块

TypeScript 中的模块可以帮助我们把代码划分成不同的文件,以便于维护和重用。模块使用 export 和 import 关键字来定义和导入代码。例如:

// person.ts
export interface Person {
  name: string;
  age: number;
  sayHello(): void;
}

// main.ts
import { Person } from "./person";

let person: Person = {
  name: "Alice",
  age: 30,
  sayHello: function() {
    console.log("Hello, my name is " + this.name);
  }
};

在上面的代码中,我们在 person.ts 文件中定义了一个名为 Person 的接口,并使用 export 关键字导出它。然后在 main.ts 文件中使用 import 关键字导入这个接口,并创建一个符合这个接口的对象。

总结

本文介绍了 TypeScript 的基础知识,包括基本类型、类型注解和类型推断、接口、类、泛型和模块。掌握这些知识可以帮助你更好地理解和使用 TypeScript。当然,这只是 TypeScript 的冰山一角,如果你想深入了解 TypeScript,还有很多其他方面需要学习。