从 A 到 Z 学习 TypeScript
TypeScript 是一款功能强大的工具,适用于希望在项目中添加静态类型的 JavaScript 开发人员。无论您是初学者还是经验丰富的开发人员,本博客都会通过示例带您了解 TypeScript 概念!
1.什么是 TypeScript?🤔
TypeScript 是 JavaScript 的一个超集,添加了静态类型。它可以帮助您尽早发现错误并提高代码的可读性。TypeScript 可编译为常规 JavaScript,因此它可以在任何运行 JavaScript 的环境中运行!
2. 设置 TypeScript
首先使用 npm 全局安装 TypeScript:
npm install -g typescript
检查安装:
tsc --version
您还可以创建一个 `tsconfig.json` 文件来配置 TypeScript 设置:
tsc --init
3.基本类型
在 TypeScript 中,类型是基础。让我们从一些基本类型开始:
let name: string = "John Doe"; // A string let age: number = 25; // A number let isStudent: boolean = true; // A boolean
4.数组和元组
数组存储多个项目,而元组是具有固定类型和长度的数组。
// Array let scores: number[] = [90, 85, 78]; // Tuple let person: [string, number] = ["John", 25];
5. 枚举🎉
枚举是代表相关值集合的绝佳方式。例如,表示星期几:
enum Day { Sunday, Monday, Tuesday, Wednesday, Thursday, Friday, Saturday } let today: Day = Day.Monday; console.log(today); // Outputs: 1
您还可以为枚举分配自定义值:
enum Color { Red = "RED", Green = "GREEN", Blue = "BLUE" } let favoriteColor: Color = Color.Green;
6. 函数和返回类型
在 TypeScript 中,您可以指定函数的返回类型以确保一致性。
function greet(name: string): string { return `Hello, ${name}!`; } let message = greet("Alice"); // TypeScript knows this is a string
您还可以定义接受多种类型的函数:
function combine(a: string | number, b: string | number): string | number { return a + b; } console.log(combine(5, 10)); // 15 console.log(combine("Hello", "World")); // "HelloWorld"
7. 接口📐
接口定义对象的形状。它们允许您指定所需的属性及其类型:
interface Person { name: string; age: number; } let user: Person = { name: "Alice", age: 30 };
8. 类和对象
TypeScript 通过类支持面向对象编程。
class Car { make: string; model: string; constructor(make: string, model: string) { this.make = make; this.model = model; } displayInfo(): string { return `Car: ${this.make} ${this.model}`; } } let myCar = new Car("Toyota", "Corolla"); console.log(myCar.displayInfo()); // Car: Toyota Corolla
9. 泛型
泛型允许您创建具有灵活类型的可重用组件。当您事先不知道类型时,这很有用。
function identity(arg: T): T { return arg; } let num = identity(123); // 123 let str = identity("Hello"); // "Hello"
10. 联合类型和交叉类型⚔️
联合类型允许变量保存不同类型的值,而交叉类型则将多种类型合并为一种。
**联合类型:**
function printId(id: string | number) { console.log(id); } printId(101); // Works fine printId("abc"); // Works fine
**交叉口类型:**
interface Person { name: string; } interface Contact { phone: string; } type PersonWithContact = Person & Contact; const contact: PersonWithContact = { name: "Alice", phone: "123-456-7890" };
11. 类型别名
您可以使用类型别名创建自己的类型名称。
type Point = { x: number; y: number }; let point: Point = { x: 10, y: 20 };
12. 类型断言
有时,TypeScript 无法推断出确切的类型。在这种情况下,你可以断言类型:
let someValue: any = "Hello, TypeScript!"; let strLength: number = (someValue as string).length;
13. React 中的 TypeScript
TypeScript 可以与 React 无缝协作!以下是示例:
import React from 'react'; interface ButtonProps { label: string; } const Button: React.FC= ({ label }) => { return ; }; export default Button;
14. 高级类型🌐
type PersonKeys = "name" | "age"; type PersonMapped = { [key in PersonKeys]: string };
type IsString= T extends string ? "Yes" : "No"; type Test = IsString ; // "Yes"
回答这个问题??🤯
那么,说了这么多,我来给你回答一个棘手的问题:
如果 TypeScript 是 JavaScript 的超集,并且它可以编译为 JavaScript,你能告诉我**我们为什么需要 TypeScript**吗?这只是为了类型安全,还是有更强大的东西隐藏在幕后?你怎么看?在评论中发表你的想法!😅
**结论**
各位,现在就到这里!从基本类型到高级功能,您刚刚完成了 TypeScript 速成课程。🌟 使用 TypeScript,您不仅可以添加类型,还可以为代码添加结构、安全性和清晰度。立即开始在您的项目中使用它,看看它如何改变您的 JavaScript 体验!