TypeScript 学习笔记(一):基础概述与类型系统

TypeScript 学习笔记(一):基础概述与类型系统

1. 引言

TypeScript 是由微软开发的一种开源编程语言,旨在扩展 JavaScript 的功能。它增加了静态类型定义,从而提升代码的可读性、可维护性和开发效率。本系列学习笔记将带你从基础到高级逐步掌握 TypeScript 的核心概念和应用。

2. TypeScript 的安装与配置

2.1 安装 TypeScript

要开始使用 TypeScript,首先需要安装它。你可以通过 npm(Node Package Manager)来安装 TypeScript:

npm install -g typescript

安装完成后,可以通过 tsc 命令检查是否安装成功:

tsc --version
2.2 创建 TypeScript 项目

我们可以通过以下步骤创建一个简单的 TypeScript 项目:

  1. 创建一个项目文件夹:

    mkdir typescript-demo
    cd typescript-demo
    
  2. 初始化一个新的 package.json 文件:

    npm init -y
    
  3. 安装 TypeScript 和 ts-node:

    npm install typescript ts-node --save-dev
    
  4. 创建一个 tsconfig.json 文件用于配置 TypeScript 编译选项:

    {
      "compilerOptions": {
        "target": "es6",
        "module": "commonjs",
        "strict": true,
        "esModuleInterop": true,
        "skipLibCheck": true
      },
      "include": ["src"]
    }
    
  5. 在项目根目录创建 src 文件夹,并在其中创建第一个 TypeScript 文件 index.ts

3. TypeScript 基础

3.1 类型注解

TypeScript 的核心是类型系统。通过类型注解,我们可以在代码中明确地指定变量、函数参数和返回值的类型。

// 变量类型注解
let isDone: boolean = true;
let decimal: number = 6;
let color: string = "blue";

// 数组类型注解
let list: number[] = [1, 2, 3];
let listGeneric: Array<number> = [1, 2, 3];

// 元组类型注解
let x: [string, number];
x = ["hello", 10];

// 枚举类型
enum Color {Red, Green, Blue}
let c: Color = Color.Green;

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

// 空值类型
let unusable: void = undefined;
3.2 接口

接口用于定义对象的类型。它可以用来描述对象的结构,例如属性和方法。

interface Person {
    firstName: string;
    lastName: string;
    age?: number; // 可选属性
}

function greet(person: Person) {
    return `Hello, ${person.firstName} ${person.lastName}`;
}

let user = { firstName: "John", lastName: "Doe" };
console.log(greet(user));
3.3 类

TypeScript 提供了对类的支持,包括继承、封装和多态性。

class Animal {
    private name: string;

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

    move(distance: number = 0) {
        console.log(`${this.name} moved ${distance}m.`);
    }
}

class Dog extends Animal {
    bark() {
        console.log('Woof! Woof!');
    }
}

let dog = new Dog("Buddy");
dog.bark();
dog.move(10);
3.4 函数

TypeScript 中的函数可以为参数和返回值定义类型。它还支持可选参数和默认参数。

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

let myAdd = function(x: number, y: number): number { return x + y; };

function buildName(firstName: string, lastName: string = "Smith"): string {
    return firstName + " " + lastName;
}

let result1 = buildName("Bob");
let result2 = buildName("Bob", "Adams");

4. TypeScript 编译

TypeScript 文件需要编译成 JavaScript 才能在浏览器或 Node.js 环境中运行。使用 tsc 命令可以将 TypeScript 文件编译为 JavaScript 文件。

tsc src/index.ts

编译后,会生成一个与源文件同名的 JavaScript 文件(index.js),可以直接运行这个文件。

5. 总结

在本篇学习笔记中,我们了解了 TypeScript 的基本概念和一些核心功能。我们从安装 TypeScript 开始,逐步介绍了类型注解、接口、类和函数的使用。下一篇学习笔记将深入探讨更复杂的类型系统以及一些高级特性。

希望你能继续关注本系列的学习笔记,逐步掌握 TypeScript 的强大功能和最佳实践。

相关推荐
Amore05256 小时前
React+TS前台项目实战(二十三)-- 基于属性自定义数值显示组件Decimal封装
前端·react.js·typescript·前端框架
小C学安全6 小时前
【VUE基础】VUE3第三节—核心语法之ref标签、props
前端·vue.js·typescript
xinZhu89 小时前
Vue3+.NET6前后端分离式管理后台实战(二十七)
前端·vue.js·typescript·vue·asp.net
前端达人1 天前
基于React和TypeScript的开源白板项目(Github项目分享)
前端·react.js·typescript·前端框架·github
flytam1 天前
TypeScript Project References npm 包构建小实践
javascript·typescript·npm
开心小老虎2 天前
TS_类型
typescript
ALKAOUA2 天前
TypeScript 系列 -- Class 类的语法和继承
前端·typescript
Oscar_02083 天前
微信小程序 typescript 开发日历界面
微信·微信小程序·typescript
Amore05254 天前
React+TS前台项目实战(二十一)-- Search业务组件封装实现全局搜索
前端·react.js·typescript·前端框架
Amd7945 天前
Nuxt3 的生命周期和钩子函数(八)
typescript·生命周期·nuxt3·钩子函数·数据写入·模式扩展·服务器监听