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 新特性 - 官方博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/904864.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/904864.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[ctfshow web入门] web57

信息收集 这下把.也过滤了&#xff0c;临时文件上传无法使用了 //flag in 36.php if(isset($_GET[c])){$c$_GET[c];if(!preg_match("/\;|[a-z]|[0-9]|\|\|\#|\|\"|\|\%|\x09|\x26|\x0a|\>|\<|\.|\,|\?|\*|\-|\|\[/i", $c)){system("cat ".$c…

Android 移动应用开发:页面跳转与数据传递功能

目录 ✅ 运行效果说明 &#x1f4c1; 文件一&#xff1a;MainActivity.java&#xff08;语言&#xff1a;Java&#xff09; &#x1f4c1; 文件二&#xff1a;Edit_MainActivity.java&#xff08;语言&#xff1a;Java&#xff09; &#x1f4c1; 文件三&#xff1a;activi…

MySQL如何优雅的执行DDL

一、概述 在MySQL中&#xff0c;DDL&#xff08;数据定义语言&#xff09;语句用于定义和管理数据库结构&#xff0c;包括创建、修改和删除数据库对象&#xff08;如表、索引等&#xff09;。执行DDL操作时&#xff0c;需要谨慎处理&#xff0c;以避免对生产环境的稳定性和性能…

onenet连接微信小程序(mqtt协议)

一、关于mqtt协议 mqtt协议常用于物联网&#xff0c;是一种轻量级的消息推送协议。 其中有三个角色&#xff0c;Publisher设备&#xff08;客户端&#xff09;发布主题到服务器&#xff0c;其他的设备通过订阅主题&#xff0c;获取该主题下的消息&#xff0c;Publisher可以发…

【Unity笔记】实现支持不同渲染管线的天空盒曝光度控制组件(SkyboxExposureController)——参数化控制

写在前面 在Unity中&#xff0c;天空盒&#xff08;Skybox&#xff09;不仅承担视觉上的背景作用&#xff0c;更是场景环境光照与氛围塑造的重要组成部分。不同时间、天气、场景转换等&#xff0c;都需要灵活调整天空的亮度。而**曝光度&#xff08;Exposure&#xff09;**就是…

blender云渲染指南2025版

一、云渲染核心概念 Blender云渲染是将本地渲染任务迁移到云端服务器集群的技术&#xff0c;通过分布式计算实现效率提升100倍以上的解决方案&#xff0c;其核心逻辑是&#xff1a;用户上传Blender项目文件至【渲染101】等云平台&#xff0c;云端调用高性能服务器&#xff08;…

火语言RPA--七牛云存储

【组件功能】&#xff1a;存储本地文件至七牛云 选择本地文件&#xff0c;通过七牛云存储配置上传至七牛云对象存储的指定地域指定存储桶指定路径。 配置预览 配置说明 AccessKey 支持T或# 前往官网获取或创建。参考链接&#xff1a;https://portal.qiniu.com/user/key Se…

小刚说C语言刷题—1004阶乘问题

1.题目描述 编程求 123⋯n 。 输入 输入一行&#xff0c;只有一个整数 n(1≤n≤10)&#xff1b; 输出 输出只有一行&#xff08;这意味着末尾有一个回车符号&#xff09;&#xff0c;包括 1 个整数。 样例 输入 5 输出 120 2.参考代码(C语言版) #include <stdio…

C语言| sizeof(array)占多少字节

C语言| 数组名作为函数参数 sizeof(数组名); 可以求出整个数组在内存中所占的字节数。 被调函数Array_Sum()中&#xff0c;数组array使用sizeof会得到多少&#xff1f; 实参数组a占32字节&#xff0c;实参a传给形参array&#xff0c;只占4字节。 原因如下&#xff1a; 数组名做…

Xcavate 上线 Polkadot |开启 Web3 房地产投资新时代

在传统资产 Tokenization 浪潮中&#xff0c;Xcavate 以房地产为切口迅速崛起。作为 2023 年 OneBlock 冬季波卡黑客松冠军&#xff0c;Xcavate 凭借创新的资产管理与分发机制&#xff0c;在波卡生态中崭露头角。此次主网上线&#xff0c;标志着 Xcavate 正式迈入全球化应用阶段…

学习心得《How Global AI Policy and Regulations Will Impact Your Enterprise》Gartner

AI时代来临,然而与之对应的是海量的数据的安全性和合规性如何保障,如何平衡个人与智能体的利益,恰巧,最近Gartner发布了《How Global AI Policy and Regulations Will Impact Your Enterprise》,我们就其中的观点一起进行探讨。 战略规划假设 我们首先关注的是关键的战略…

Inno Setup专业打包指南:从基础到高级应用

Inno Setup专业打包指南&#xff1a;从基础到高级应用 Inno Setup是一款免费开源的Windows安装程序制作工具&#xff0c;以其轻量、易用、功能强大而备受开发者青睐。它通过脚本语言定义安装行为&#xff0c;能够创建标准的Windows安装向导&#xff0c;支持文件安装、注册表操…

VScode中关于Copilot的骚操作

目录 1. Ctrl I 直接在工作区对话 2.Tab 党福音&#xff1a;写注释生成代码 3. 连续写几行函数头&#xff0c;Copilot 会自动“补全全函数” 4. 自动写单元测试 5. 在注释中要求它写某种风格 6. 代码重写器 7. 多语言切换无痛自动翻译 8. 在空文件中写注释&#xff0c…

虚拟专用服务器(VPS)完全指南:从入门到选型

开篇导读 VPS&#xff08;虚拟专用服务器&#xff09;作为介于共享主机与独立服务器之间的托管方案&#xff0c;通过独享资源保障性能本文将系统解析VPS的核心优势、适用场景及选型策略&#xff0c;助您实现从共享主机到VPS的平滑过渡 什么是虚拟专用服务器&#xff1f; 服务…

前端取经路——性能优化:唐僧的九道心经

大家好&#xff0c;我是老十三&#xff0c;一名前端开发工程师。性能优化如同唐僧的九道心经&#xff0c;是前端修行的精髓所在。在本文中&#xff0c;我将为你揭示从网络传输到渲染优化的九大关键技术&#xff0c;涵盖HTTP协议、资源加载策略、缓存控制等核心难题。通过这些实…

[论文阅读]Deeply-Supervised Nets

摘要 我们提出的深度监督网络&#xff08;DSN&#xff09;方法在最小化分类误差的同时&#xff0c;使隐藏层的学习过程更加直接和透明。我们尝试通过研究深度网络中的新公式来提升分类性能。我们关注卷积神经网络&#xff08;CNN&#xff09;架构中的三个方面&#xff1a;&…

1k实现全磁盘扫描搜索——仙盟创梦IDE-智能编程 编程工具设计

牛马的痛苦——身兼数职 在多项目开发场景下&#xff0c;项目数量众多、文件繁杂&#xff0c;导致文件查找困难重重。不同项目架构各异&#xff0c;文件命名缺乏统一规范&#xff0c;相似功能文件分散在不同项目目录&#xff0c;开发人员往往花费大量时间在文件夹层级间反复切…

Mamba 状态空间模型 笔记 llm框架 一维卷积

动画讲解 Mamba 状态空间模型_哔哩哔哩_bilibili 旧文本向量乘权重加残差 感觉好像transformer 过个llm head输出y 卷积真的很快 参考一文通透想颠覆Transformer的Mamba&#xff1a;从SSM、HiPPO、S4到Mamba(被誉为Mamba最佳解读)_mamba模型-CSDN博客 偷了 Transformer的二次复…

Python函数:从基础到进阶的完整指南

在Python编程中&#xff0c;函数是构建高效、可维护代码的核心工具。无论是开发Web应用、数据分析还是人工智能模型&#xff0c;函数都能将复杂逻辑模块化&#xff0c;提升代码复用率与团队协作效率。本文将从函数基础语法出发&#xff0c;深入探讨参数传递机制、高阶特性及最佳…

Alpha3DCS公差分析系统_国产替代的3D精度管控方案-SNK施努卡

随着智能制造发展规划的深入推进&#xff0c;工业软件国产化替代已上升为国家战略。在公差分析这一细分领域&#xff0c;长期被国外软件垄断的局面正被打破。 苏州施努卡自主研发的Alpha3DCS&#xff0c;凭借完全自主知识产权和军工级安全标准&#xff0c;成为国内实现三维公差…