TypeScript 饱受开发者争议。有人认为它是 JavaScript 自由的绊脚石,也有人将其视为在松散类型代码中的一盏明灯。无论您持何种观点,TypeScript 都将继续存在——深入了解后,您可能会发现它并非负担,而是项目的一大助力。
本系列教程将探索 TypeScript 基础知识,并提供一些技巧和疑难解答提示。
TypeScript 是 JavaScript 的静态类型超集,可编译成纯 JavaScript。简单来说,它是在 JavaScript 基础上添加了类型检查功能,帮助您尽早发现错误,编写更优质、更易维护的代码。
您可以将 TypeScript 视为一位友好的助手,在您提交代码之前仔细检查您的工作。它能帮助您:
让我们务实一些。既然 JavaScript 已经能工作,为什么还要关心 TypeScript 呢?
function greet(name: string): string { return `Hello, ${name}!`; } greet(42); // 错误:参数类型“number”无法赋值给参数类型“string”。
我发现 TypeScript 在规划大型应用时特别有用;它能清晰地展现我将处理的数据类型以及函数的输入/输出类型。
开始之前,请确保您具备基本的 JavaScript 知识,包括:
如果您对这些知识点不熟悉,请先回顾一下 JavaScript 基础知识。
TypeScript 需要安装才能使用。只需几个步骤即可准备您的开发环境:
首先,您需要安装 Node.js。安装完成后:
npm install -g typescript
tsc --version
VS Code 是 TypeScript 开发中最流行的编辑器之一,它提供了一系列功能和扩展,提高开发效率。设置方法如下:
实践是学习 TypeScript 最佳途径。本节将指导您完成第一个项目的设置,从创建文件到运行代码。
mkdir typescript-starter cd typescript-starter
npm init -y
npm install --save-dev typescript
npx tsc --init
echo "console.log('Hello, TypeScript!');" > index.ts
npx tsc index.ts node index.js
您刚刚编写并编译了您的第一个 TypeScript 程序!
TypeScript 的强大之处在于其类型系统。让我们探讨一些基本类型:
原始类型是 TypeScript 类型系统的基石,包括基本数据类型,如字符串、数字和布尔值。以下是它们的简要介绍:
let name: string = "Alice";
let age: number = 25;
let isStudent: boolean = true;
除了原始类型外,TypeScript 还支持更复杂的类型,例如数组、元组和特殊类型(例如 any 和 unknown)。这些类型使您的代码更灵活,同时保持类型安全。
let scores: number[] = [90, 85, 88];
let user: [string, number] = ["Alice", 25];
let data: any = "可以是任何类型";
let value: unknown = 10;
function logMessage(message: string): void { console.log(message); }
let something: null = null; let nothing: undefined = undefined;
四、使用类型注释
TypeScript 中的类型注释允许开发人员指定变量、参数或函数返回值的类型,确保代码符合定义的结构,从而更容易在开发过程中捕获错误并保持项目的一致性。
在编写代码时,请注意以下集成功能:
为变量设置类型,确保它们始终被赋予正确的值,并且应用程序的其余部分能正确识别其类型。
let firstName: string = "Alice"; let age: number = 30;
同样,对于函数,您可以定义参数的类型,以及返回值的类型。
// 注意每个参数的“number”关键字 function add(a: number, b: number): number { return a + b; }
// 注意结尾处的“string”关键字 function greet(name: string): string { return `Hello, ${name}!`; }
TypeScript 允许您声明自定义类型,以更好地构建代码并强制执行规则。通过使用类型或接口,您可以为对象、函数甚至联合类型定义自定义类型。这不仅使您的代码更健壮,而且还提高了大型项目的可读性和一致性。
interface UserProfile { name: string; age: number; isActive: boolean; } const user: UserProfile = { name: "Alice", age: 25, isActive: true, };
TypeScript 中的接口定义了对象的结构,确保它们具有特定的属性和类型。本节将向您展示如何创建和使用接口:
interface User { name: string; age: number; } const user: User = { name: "Bob", age: 30, };
有时,并非对象中的所有属性都是必需的。TypeScript 允许您在接口中定义可选属性以优雅地处理这种情况。
interface Product { name: string; price?: number; } const item: Product = { name: "笔记本" };
当您想要确保某些值在设置后无法更改时,只读属性非常有用。以下是如何在接口中使用它们:
interface Book { readonly title: string; } const myBook: Book = { title: "TypeScript 手册" }; // myBook.title = "另一本书名"; // 错误:无法赋值给“title”。
使用接口来定义 API 响应可以确保您安全有效地处理来自服务器的数据。这是一个实际示例:
interface ApiResponse { data: unknown; status: number; }
实践是掌握 TypeScript 的关键。在此项目中,您将创建一个简单的待办事项列表应用程序,该应用程序将运用您迄今为止学到的知识:
interface Todo { id: number; title: string; completed: boolean; }
const todos: Todo[] = [ { id: 1, title: "学习 TypeScript", completed: false }, ];
function markAsComplete(todo: Todo): boolean { let bUpdated = false; todos.map((td: Todo) => { if (td.id === todo.id) { bUpdated = true; td.completed = true; } }); return bUpdated; } function addToDo(todo: Todo): boolean { try { todos.push(todo); console.log(`已将 "${todo.title}" 添加到列表!`); return true; } catch (error) { console.error("添加待办事项时出错!", error); return false; } }
希望您喜欢本教程。我将继续创作更多教程,更深入地探讨 TypeScript 的功能和用例。
期待下次与您相见!
以上就是TypeScript 基础知识:初学者指南 (✅的详细内容,更多请关注php中文网其它相关文章!
每个人都需要一台速度更快、更稳定的 PC。随着时间的推移,垃圾文件、旧注册表数据和不必要的后台进程会占用资源并降低性能。幸运的是,许多工具可以让 Windows 保持平稳运行。
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号