求知久久-诱人的 TypeScript 视频教程---<<<下栽科>>>:97java.xyz/4701/
0基础入门TS!求知久久精神:7天吃透TypeScript
学习前寄语:
TypeScript 不是一门全新的语言,而是 JavaScript 的 超集。你可以把它理解为“带类型的 JavaScript”。它的最终目的是让你写出更健壮、更易维护的代码。抱着“给JS加类型”这个核心思想去学,会轻松很多。
七日攻坚学习计划
Day 1:初识TypeScript – 为什么是它?
目标: 理解TS的价值,完成环境搭建,并运行第一个TS程序。
-
为什么选择TypeScript?
- 类型安全: 在代码运行前就能发现潜在错误,比如将字符串误当数字使用。
- 更好的可读性和可维护性: 类型就是最好的注释。
- 强大的IDE支持: 获得更智能的代码补全、接口提示和重构功能。
- 渐进式采用: 你可以在现有的JS项目中逐步引入TS。
-
环境搭建
- 安装 Node.js。
- 通过 npm 全局安装 TypeScript:
npm install -g typescript - 创建一个
hello.ts文件。 - 编写代码:
let message: string = "Hello, TypeScript!"; console.log(message); - 编译它: 在终端运行
tsc hello.ts,这会生成一个hello.js文件。 - 用
node hello.js运行JS文件。
-
核心概念:
- 类型注解:
: type的语法,如let age: number = 25;
- 类型注解:
Day 2:掌握基础类型 – 构建程序的砖块
目标: 熟练掌握TS中的所有基础类型。
-
原始类型:
boolean:let isDone: boolean = false;number:let decimal: number = 6;string:let color: string = "blue";null和undefined: 它们是所有类型的子类型。
-
数组类型:
let list: number[] = [1, 2, 3];let list: Array<number> = [1, 2, 3];(泛型语法)
-
特殊类型:
-
Any: 任意类型,相当于回到JS,应尽量避免使用。
let notSure: any = 4; -
Void: 通常用于表示函数没有返回值。
function warnUser(): void { console.log("warning"); } -
Tuple (元组): 表示一个已知元素数量和类型的数组。
let x: [string, number] = [“hello”, 10]; -
Enum (枚举): 为一组数值赋予友好的名字。
typescript
复制下载
enum Color {Red, Green, Blue} let c: Color = Color.Green;
-
Day 3:深入函数与接口 – 定义契约
目标: 学会如何为函数和对象定义“形状”。
-
函数类型:
-
为函数添加类型: 包括参数类型和返回值类型。
typescript
复制下载
function add(x: number, y: number): number { return x + y; } -
可选参数和默认参数:
function buildName(firstName: string, lastName?: string) { ... } -
箭头函数:
const myAdd = (x: number, y: number): number => x + y;
-
-
接口 – Interface:
-
描述对象形状: 这是TS的核心魅力所在。
typescript
复制下载
interface Person { name: string; age: number; readonly id: number; // 只读属性 nickname?: string; // 可选属性 } let tom: Person = { name: "Tom", age: 25, id: 89757 }; -
描述函数类型: 接口也能描述函数。
typescript
复制下载
interface SearchFunc { (source: string, subString: string): boolean; }
-
Day 4:拥抱类与面向对象 – 更现代的JS
目标: 理解TS如何增强ES6的类。
-
类的基本使用:
typescript
复制下载
class Animal { name: string; constructor(theName: string) { this.name = theName; } move(distanceInMeters: number = 0) { console.log(`${this.name} moved ${distanceInMeters}m.`); } } -
访问修饰符:
public: (默认) 在任何地方都可以访问。private: 只能在类内部访问。protected: 可以在类及其子类中访问。
-
继承:
typescript
复制下载
class Dog extends Animal { constructor(name: string) { super(name); } move(distance = 10) { // 重写方法 console.log("Running..."); super.move(distance); } }
Day 5:解锁泛型 – 创造可重用的组件
目标: 理解泛型,让代码组件可以支持多种类型。
-
泛型是什么?
- 在定义函数、接口或类的时候,不预先指定具体的类型,而在使用的时候再指定类型的一种特性。
-
泛型函数:
typescript
复制下载
function identity<T>(arg: T): T { return arg; } // 使用 let output = identity<string>("myString"); // 类型是string let output2 = identity("myString"); // 更常见的类型推断 -
泛型接口与泛型类:
typescript
复制下载
interface GenericIdentityFn<T> { (arg: T): T; } class GenericNumber<T> { zeroValue: T; add: (x: T, y: T) => T; }
Day 6:高级类型与类型操纵 – 成为类型高手
目标: 学习联合类型、类型守卫等高级概念,让类型系统更灵活。
-
联合类型:
let padding: string | number; -
类型别名:
type Name = string; type NameResolver = () => string; -
类型断言: 告诉编译器“你相信我,我知道这是什么类型”。
- 两种语法:
<string>someValue或someValue as string。
- 两种语法:
-
类型守卫: 在条件分支中缩小类型的范围。
typeof,instanceof,in操作符。- 自定义类型守卫:
function isFish(pet: Fish | Bird): pet is Fish { ... }
Day 7:工程实战与配置 – 学以致用
目标: 了解如何在真实项目中使用TS,并理解 tsconfig.json 配置文件。
-
tsconfig.json文件:-
这是TS项目的核心配置文件。
-
重要配置项:
target: 编译成哪个版本的JS (如es5,es2015)。module: 模块系统 (如commonjs,es2015)。outDir: 指定输出目录。strict: 开启所有严格的类型检查选项(强烈推荐)。include/exclude: 指定要编译的文件。
-
-
与打包工具集成:
- Webpack: 使用
ts-loader。 - Vite: 天然支持TS,开箱即用。
- Webpack: 使用
-
在React/Vue中使用TS:
- React: 使用
.tsx文件,为组件的props和state定义类型。 - Vue: 使用
Vue 3和Composition API与<script setup lang="ts">能获得极佳的TS支持。
- React: 使用
总结与建议
- 多写多练: 光看视频不写代码是学不会的。把教程里的每个例子都亲手敲一遍,并尝试修改它们。
- 拥抱错误: 初期会遇到大量的类型错误,不要灰心。仔细阅读错误信息,这是TS在帮你,是学习过程的一部分。
- 循序渐进: 不必强求第一天就理解所有高级类型。先会用基础类型,再慢慢深入。
- 求知久久教程的优势: 这套教程正是遵循了这种由浅入深、实战驱动的路径,非常适合零基础的同学建立信心。