TypeScript 终极入门指南:从零到精通 🚀

本文涉及的产品
多模态交互后付费免费试用,全链路、全Agent
简介: TypeScript是JavaScript的超集,添加静态类型系统,提升代码健壮性与可维护性。本教程涵盖基础类型、高级特性、面向对象编程及最佳实践,配代码示例与图解,助你快速掌握TS核心概念,轻松进阶前端开发!🎉

好的!以下是一份详细的 TypeScript 教程博客,包含代码示例、解释、图表和表情,帮助读者轻松上手并深入理解 TypeScript 的核心概念。🎉


TypeScript 是 JavaScript 的超集,添加了静态类型系统

目录 📚

  1. 什么是 TypeScript?
  2. 为什么使用 TypeScript?
  3. 安装与配置
  4. 基础类型与语法
  5. 高级类型与工具
  6. 面向对象编程
  7. 实用工具与最佳实践

1. 什么是 TypeScript?

TypeScript 是 JavaScript 的超集,由 Microsoft 开发,通过添加静态类型系统高级语法特性,让代码更健壮、易维护。最终会被编译成纯 JavaScript。

// 简单示例:类型注解
function greet(name: string): string {
  return `Hello, ${name}! 👋`;
}
console.log(greet("Alice")); // 输出: Hello, Alice! 👋

2. 为什么使用 TypeScript?

  • 🛡️ 类型安全:编译时捕捉错误,减少运行时崩溃。
  • 🧩 代码智能提示:IDE 支持更强大的自动补全。
  • 🔍 可读性:显式类型注解让代码意图更清晰。
  • 渐进式:可逐步迁移现有 JavaScript 项目。


TypeScript 编译流程包含类型检查


3. 安装与配置

安装

npm install -g typescript

初始化项目

tsc --init  # 生成 tsconfig.json

示例 tsconfig.json

{
  "compilerOptions": {
    "target": "ES6",
    "module": "CommonJS",
    "strict": true,
    "outDir": "./dist"
  }
}

编译命令

命令行编译

每写一次ts文件,开发人员每次都要编译一次ts文件

# tsc +ts文件名
# 例如:需要编译index.ts文件(后缀可省略)
tsc index

左边为:编译生成的js文件

自动化编译

修改或新增ts文件后,会自动更新或生成js文件

操作步骤:

执行命令:tsc --init 后会生成tsconfig.json文件

命令:tsc --watch

作用:监视当前整个目录的文件

命令:tsc  --watch index.ts

作用:监视index.ts文件

tsc --watch #监视当前整个目录的文件
tsc  --watch index.ts # 监视index.ts文件

4. 基础类型与语法

基本类型声明注解

Ts继承了Js的所有对象

Ts中相较于Js多加了6个新类型:

any  

unknown

never

void

tuple

enum

let isDone: boolean = false;
let count: number = 42;
let message: string = "TypeScript Rocks! 🎉";
// 数组与元组
let numbers: number[] = [1, 2, 3];
let tuple: [string, number] = ["Alice", 30];
// 类型推断(无需显式注解),根据数据推断类型
let inferredString = "Hello"; // 类型为 string

1. any

any  : 任意类型,想存什么存什么

不建议使用

let a :any
a=10
a="abc"
a=false
console.log(a)
// 或
let b
b = 10
b="abc"
b=true
console.log(b)

注意点:any会穿透某一个数据的类型

let a :any
a=10
let userName :string 
userName = a
console.log(userName)
console.log(typeof userName)

2. unknown

解释:未知的,不知道定义的数据到底会成什么类型

是一个类型安全的any

let a :unknown
a=99
a="abc"
console.log(a)

注意点:使用unknown时,需要使用其他类型的方法时,需要判断或者断言

let userName :unknown
userName="张三"
// 方法一
if(typeof userName=="string"){
    console.log(userName.length)
}
// 方法二 :断言1
let a:string
a=userName as string
console.log(a.length)
// 方法三:断言2
let b :string
b=<string>a
console.log(b.length)

3. never

解释:从不

作用:

几乎不用never区直接限制变量,没有意义,不建议使用

never时ts主动推断出来的

never可以用于限制的函数值

  • 没加never
function demo(){
}
console.log(demo())

  • 加never
function demo():never{
   
}
console.log(demo())

4. void

解释:空

作用:

限制函数返回值 【函数返回值为空,调用者也不应依赖其返回值进行任何操作】

注意:undined是void可以接受的一种空

5. Object

结论:无论是object和Object,在实际开发中用的相对较少,因为范围太大了。

例如:object除了原始类型,其他类型都可以给它赋值。

扩展:原始类型:number/boolean/string/null/undefined

例如:Object  可以调用到Object方法的类型:

如:toString()方法

总结:Object除了null和undefined其他的都可以存。

函数类型

// 参数和返回值类型
function add(a: number, b: number): number {
  return a + b;
}
// 可选参数与默认值
function logMessage(message: string, prefix?: string = "INFO"): void {
  console.log(`[${prefix}] ${message}`);
}

5. 高级类型与工具

联合类型与交叉类型

type ID = string | number;
let userId: ID = "ABC123";
interface Person {
  name: string;
}
interface Employee {
  id: number;
}
type EmployeePerson = Person & Employee; // 合并类型

泛型

function identity<T>(arg: T): T {
  return arg;
}
identity<string>("Hello"); // 显式指定类型
identity(42); // 类型推断为 number

实用工具类型

interface User {
  name: string;
  age: number;
  email?: string;
}
type PartialUser = Partial<User>; // 所有属性变为可选
type ReadonlyUser = Readonly<User>; // 所有属性只读

6. 面向对象编程

类与继承

class Animal {
  constructor(public name: string) {} // 自动分配属性
  move(distance: number = 0) {
    console.log(`${this.name} moved ${distance}m. 🏃`);
  }
}
class Dog extends Animal {
  bark() {
    console.log("Woof! 🐶");
  }
}
const dog = new Dog("Buddy");
dog.bark(); // Woof! 🐶
dog.move(10); // Buddy moved 10m. 🏃

接口与实现

interface Shape {
  area(): number;
}
class Circle implements Shape {
  constructor(private radius: number) {}
  area() {
    return Math.PI * this.radius ** 2;
  }
}

7. 最佳实践

  • 启用严格模式:在 tsconfig.json 中设置 "strict": true
  • 🔄 逐步迁移:将 .js 文件重命名为 .ts 并逐步修复类型错误。
  • 🛠️ 使用类型别名和接口:优先用 interface 描述对象结构,用 type 处理复杂类型逻辑。
  • ⚠️ 避免 any 类型:除非必要,尽量用明确的类型注解。

总结 🎯

TypeScript 通过静态类型和现代语法,显著提升了 JavaScript 的可维护性和开发体验。从基础类型到高级泛型,再到面向对象设计,逐步掌握这些概念将让你写出更健壮的代码!

动手练习:尝试将你的 JavaScript 项目迁移到 TypeScript,并解决遇到的所有类型错误! 💻


有任何问题或想深入讨论?欢迎在评论区留言! 💬👇

目录
相关文章
|
9天前
|
人工智能 运维 安全
|
7天前
|
人工智能 异构计算
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
敬请锁定《C位面对面》,洞察通用计算如何在AI时代持续赋能企业创新,助力业务发展!
|
8天前
|
机器学习/深度学习 人工智能 自然语言处理
B站开源IndexTTS2,用极致表现力颠覆听觉体验
在语音合成技术不断演进的背景下,早期版本的IndexTTS虽然在多场景应用中展现出良好的表现,但在情感表达的细腻度与时长控制的精准性方面仍存在提升空间。为了解决这些问题,并进一步推动零样本语音合成在实际场景中的落地能力,B站语音团队对模型架构与训练策略进行了深度优化,推出了全新一代语音合成模型——IndexTTS2 。
676 23
|
8天前
|
人工智能 测试技术 API
智能体(AI Agent)搭建全攻略:从概念到实践的终极指南
在人工智能浪潮中,智能体(AI Agent)正成为变革性技术。它们具备自主决策、环境感知、任务执行等能力,广泛应用于日常任务与商业流程。本文详解智能体概念、架构及七步搭建指南,助你打造专属智能体,迎接智能自动化新时代。
|
14天前
|
人工智能 JavaScript 测试技术
Qwen3-Coder入门教程|10分钟搞定安装配置
Qwen3-Coder 挑战赛简介:无论你是编程小白还是办公达人,都能通过本教程快速上手 Qwen-Code CLI,利用 AI 轻松实现代码编写、文档处理等任务。内容涵盖 API 配置、CLI 安装及多种实用案例,助你提升效率,体验智能编码的乐趣。
1113 110
|
人工智能 数据可视化 数据挖掘
Quick BI 体验&征文有奖!
瓴羊生态推出Quick BI 征文激励计划,鼓励用户分享数据分析实践经验与技术洞察,征集高质量原创文章。内容围绕AI功能体验与BI案例实践,设季奖、年奖及参与奖,优秀作者可获现金奖励、产品内测资格及官方认证形象。投稿截止至2026年3月31日。
Quick BI 体验&征文有奖!