TypeScript 基本原理和使用方法,看这篇文章就够了

156 阅读5分钟

TypeScript 基本原理和使用方法

TypeScript 是 JavaScript 的一个超集,主要提供了类型系统和对 ES6+ 的支持。以下是 TypeScript 的基本原理和使用方法:

基本原理

  1. 静态类型检查

    • TypeScript 在编译时进行类型检查,而不是运行时
    • 可以提前发现潜在的类型错误
  2. 类型推断

    • 即使没有显式类型注解,TypeScript 也能根据上下文推断变量类型
  3. 渐进式类型系统

    • 可以逐步为 JavaScript 代码添加类型
    • 允许部分代码使用 any 类型绕过类型检查
  4. 编译过程

    • TypeScript 代码通过编译器 (tsc) 转换为 JavaScript 代码
    • 编译时会移除所有类型注解和接口等只在 TypeScript 中存在的特性

基本使用方法

1. 安装 TypeScript

npm install -g typescript

2. 初始化项目

tsc --init  # 创建 tsconfig.json 配置文件

3. 基本类型

// 原始类型
let isDone: boolean = false;
let decimal: number = 6;
let color: string = "blue";

// 数组
let list: number[] = [1, 2, 3];
let list2: Array<number> = [1, 2, 3]; // 泛型语法

// 元组
let tuple: [string, number] = ["hello", 10];

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

// any
let notSure: any = 4;
notSure = "maybe a string instead";

// void
function warnUser(): void {
    console.log("This is a warning message");
}

// null 和 undefined
let u: undefined = undefined;
let n: null = null;

// never (表示永远不会返回的类型)
function error(message: string): never {
    throw new Error(message);
}

4. 接口

interface Person {
    name: string;
    age?: number; // 可选属性
    readonly id: number; // 只读属性
    [propName: string]: any; // 任意属性
}

function greet(person: Person) {
    console.log(`Hello, ${person.name}`);
}

let tom: Person = {
    name: 'Tom',
    id: 1
};

5. 类

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 {
    constructor(name: string) {
        super(name);
    }
    
    bark() {
        console.log('Woof! Woof!');
    }
}

const dog = new Dog('Cooper');
dog.bark();
dog.move(10);

6. 泛型

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

let output = identity<string>("myString");
let output2 = identity("myString"); // 类型推断

interface GenericIdentityFn<T> {
    (arg: T): T;
}

let myIdentity: GenericIdentityFn<number> = identity;

7. 模块

// math.ts
export function add(x: number, y: number): number {
    return x + y;
}

// app.ts
import { add } from './math';
console.log(add(2, 3));

8. 编译 TypeScript

tsc  # 编译所有 .ts 文件
tsc --watch  # 监听文件变化并自动编译

高级特性

  1. 类型别名

    type StringOrNumber = string | number;
    
  2. 联合类型和交叉类型

    let value: string | number;
    type Combined = Person & Employee;
    
  3. 装饰器

    @sealed
    class Greeter {
        greeting: string;
        
        constructor(message: string) {
            this.greeting = message;
        }
        
        @enumerable(false)
        greet() {
            return "Hello, " + this.greeting;
        }
    }
    
  4. 命名空间

    namespace Validation {
        export interface StringValidator {
            isAcceptable(s: string): boolean;
        }
    }
    

TypeScript 通过提供强大的类型系统,大大提高了 JavaScript 代码的可维护性和开发效率,同时保持了与现有 JavaScript 代码的兼容性。

补充 TypeScript 发布历史的详细时间线

TypeScript 的第一个公开版本由 微软2012年10月1日 发布。

下面是其关键发展历程的详细时间线:

timeline
    title TypeScript 发布历程
    section 2012 
        10月 : 首次公开发布<br>v0.8
    section 2014 
        04月 : 迎来转折点<br>v1.0 发布
    section 2016 
        09月 : 关键革新<br>v2.0 发布
    section 2018 
        10月 : 重大重构<br>v3.0 引入工程引用
    section 2020 
        08月 : 新的里程碑<br>v4.0 发布
    section 2022 
        至今 : 持续迭代<br>每年发布多个版本

关键版本和里程碑详解

1. 诞生与早期 (2012-2013)
  • 2012年10月1日:微软的 Anders Hejlsberg(C# 的首席架构师)团队宣布 TypeScript 的第一个公开版本 v0.8。这是一个早期预览版,旨在收集社区反馈。
  • 2013年6月:发布了 v0.9,带来了重要的泛型支持。
2. 正式版与转折点 (2014)
  • 2014年4月2日:在 Build 开发者大会上,微软发布了 TypeScript 1.0。这个版本标志着 TypeScript 已经足够稳定,可以用于生产环境。这是其发展史上的第一个重大里程碑。
3. 快速发展与生态巩固 (2015-2017)
  • 2016年9月TypeScript 2.0 是一个巨大的飞跃,引入了许多关键特性,如:
    • non-nullable 类型 (strictNullChecks):极大地帮助了避免可怕的 undefined is not a function 错误。
    • 控制流类型分析:基于代码路径的类型推断。
    • never 类型
    • 从此,TypeScript 开始被大型项目(包括 Angular 团队)广泛采用。
4. 成为主流 (2018-2019)
  • 2018年7月TypeScript 3.0 引入了 工程引用,支持将大型项目拆分成更小的、相互依赖的部分,极大地改善了大型代码库的构建体验。
  • 2019年:TypeScript 的受欢迎程度爆炸式增长。几乎所有主流前端框架(React, Vue, Angular, Svelte)都提供了优先的 TypeScript 支持。create-react-appVue CLI 等工具都内置了 TypeScript 模板。
5. 持续创新与 refinement (2020至今)
  • 2020年8月TypeScript 4.0 发布,引入了可变元组、标签元组、自定义 JSX 工厂等强大特性。
  • 2021-2023:版本 4.x 和 5.x 系列持续迭代,专注于提升性能、优化开发体验(如更智能的类型推导、更快的构建速度)和增加精致的类型系统功能(如模板字面量类型、模板字符串类型),巩固了其作为大型 JavaScript 项目首选语言的地位。

为什么 TypeScript 能获得成功?

  1. 微软背书与 Anders Hejlsberg:由世界顶级的编程语言设计师领导,保证了语言的设计质量。
  2. 渐进式采用:JavaScript 就是有效的 TypeScript。开发者可以将现有的 JS 项目逐步迁移到 TS,无需重写一切。
  3. 解决痛点:它精准地解决了大型 JavaScript 应用程序难以维护、重构和协作的核心痛点。
  4. 强大的生态系统:出色的编辑器支持(尤其是 VS Code,也是微软开发的)、完善的类型定义文件(DefinitelyTyped @types 仓库)和主流框架的全面拥抱。

总结来说,TypeScript 并非一夜成名,而是经过多年的稳步发展和不断完善,最终在 2016-2019 年间 从“一个不错的选择”成长为“大型前端项目的默认选择”。

PS:创作不易 学会了记得,点赞,评论,收藏,分享