当前位置: 首页 > news >正文

TypeScript简介

🌟 TypeScript入门

TypeScript 是 JavaScript 的超集,由微软开发并维护,通过静态类型检查现代语言特性,让大型应用开发变得更加可靠和高效。

// 一个简单的 TypeScript 示例
interface User {name: string;age: number;greet(): string;
}class Developer implements User {constructor(public name: string, public age: number) {}greet() {return `Hello, I'm ${this.name} and I code! 👨‍💻`;}
}const dev = new Developer("Alice", 28);
console.log(dev.greet());

🧩 为什么选择 TypeScript?

特性JavaScriptTypeScript
类型系统动态类型静态类型
编译时错误检查
IDE 智能提示有限强大
面向对象特性基本完整
适用项目规模中小型中大型

🎯 TypeScript 核心特性

1. 🔍 类型系统(静态类型检查)

let isDone: boolean = false;  // 布尔值
let decimal: number = 6;      // 数字
let color: string = "blue";   // 字符串
let list: number[] = [1, 2, 3]; // 数组// 元组
let tuple: [string, number] = ["hello", 10];// 枚举
enum Color { Red = 1, Green, Blue }
let c: Color = Color.Green;

2. 🏗️ 接口与类型别名

// 接口
interface Point {x: number;y: number;z?: number; // 可选属性readonly id: string; // 只读属性
}// 类型别名
type UserID = string | number;// 实现接口
class MyPoint implements Point {constructor(public x: number, public y: number, readonly id: string) {}
}

3. 🧬 泛型编程

function identity<T>(arg: T): T {return arg;
}// 使用
let output = identity<string>("myString");
let output2 = identity(42); // 类型推断

4. 🎭 高级类型

// 联合类型
type ID = string | number;// 交叉类型
type Named = { name: string };
type Aged = { age: number };
type Person = Named & Aged;// 类型守卫
function isString(test: any): test is string {return typeof test === "string";
}

🛠️ TypeScript 开发工具链

1. 开发环境配置

# 初始化项目
npm init -y# 安装 TypeScript
npm install typescript --save-dev# 初始化 tsconfig.json
npx tsc --init

2. 推荐 VSCode 插件

  • TypeScript Vue Plugin (Vue 支持)
  • ESLint (代码检查)
  • Prettier (代码格式化)
  • Jest Runner (测试运行)

3. 编译与运行

// tsconfig.json 示例
{"compilerOptions": {"target": "ES2020","module": "commonjs","strict": true,"esModuleInterop": true,"outDir": "./dist"},"include": ["src/**/*"]
}

🌈 TypeScript 5.0+ 新特性

1. 🔥 装饰器(标准)

@sealed
class Greeter {greeting: string;constructor(message: string) {this.greeting = message;}@loggreet() {return "Hello, " + this.greeting;}
}

2. 🚀 满足 ES 模块规范

// 支持顶级 await
const data = await fetchData();
console.log(data);

3. 🧠 更智能的类型推断

// 自动推断数组类型
const mixed = ["text", 42, true]; // (string | number | boolean)[]

📊 TypeScript 生态系统

框架/库TS 支持度特点
React✅ 优秀完整类型定义
Vue 3✅ 原生组合式 API 完美支持
Angular✅ 内置完全基于 TypeScript
Node.js✅ 良好@types/node 提供类型定义
Express✅ 良好需要安装 @types/express

🚧 常见问题与解决方案

1. 类型断言

// 方式一:尖括号语法
let someValue: any = "this is a string";
let strLength: number = (<string>someValue).length;// 方式二:as 语法
let strLength2: number = (someValue as string).length;

2. 处理第三方库

// 没有类型定义的库
declare module "some-untyped-library";// 使用 @types
npm install --save-dev @types/lodash

3. 类型扩展

// 扩展全局类型
declare global {interface Window {myCustomProp: string;}
}

🎓 学习资源推荐

  1. 官方文档 - 最权威的参考资料
  2. TypeScript Deep Dive - 深入理解 TS
  3. TypeScript 入门教程 - 中文优质教程
  4. TypeScript 4.0 新特性 - 官方博客

相关文章:

  • MPay码支付系统第四方聚合收款码多款支付插件个人免签支付源码TP8框架全开源
  • MD2card + Deepseek 王炸组合 一键制作小红书知识卡片
  • Qwen3与Deepseek R1对比(截止20250506)
  • CentOS 7 安装指定版本 Docker 及镜像加速/配置优化攻略
  • 计算机视觉与深度学习 | 基于数字图像处理的裂缝检测与识别系统(matlab代码)
  • SiC 材料及器件在高频大功率领域的应用现状
  • MCP服务发展现状的有趣发现
  • 【每天一个知识点】使用 apriori() 函数获取频繁项集
  • 论广告系统对存算分离架构的应用
  • 代码随想录算法训练营第60期第二十八天打卡
  • 1ms城市算网稳步启航,引领数字领域的“1小时经济圈”效应
  • C++复习
  • 老牌即时通讯应用Skype被关闭,卒年22岁!
  • 2024 ICPC武汉邀请赛暨湖北省赛 题解
  • [特殊字符]【深度解析】Transformer革命:《Attention Is All You Need》完全解读
  • 数据初步了解
  • Excel Vlookup
  • Flutter 布局
  • Java 内存区域与内存溢出异常
  • 数据结构 --- 栈
  • 李干杰走访各民主党派中央和全国工商联机关
  • 诺和诺德一季度减重版司美格鲁肽收入增83%,美国市场竞争激烈下调全年业绩预期
  • 山东莒县农商银行去年收入、利润下降,资本充足率等指标增长
  • 中国公民免签赴马来西亚的停留天数如何计算?使馆明确
  • 安顺市原副市长、市公安局原局长顾长华任贵州省民委副主任
  • 丁薛祥在学习《习近平经济文选》第一卷专题研讨班上强调,深入学习贯彻习近平经济思想,加强党中央对经济工作的集中统一领导