# ts+react井字棋游戏 **Repository Path**: panws/ts-react-tache-chess-game ## Basic Information - **Project Name**: ts+react井字棋游戏 - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2024-03-30 - **Last Updated**: 2024-03-30 ## Categories & Tags **Categories**: Uncategorized **Tags**: React, TypeScript ## README # 井字棋游戏 TS + REACT ### `npm start` ### `npm test` ### `npm run build` ### `npm run eject` # 总结 ## 概念部分 TypeScript 是可选的,静态的类型系统 - 为什么需要类型系统 要构建大型的应用,会涉及大量的函数和接口, 如果没有类型检查,会产生大量的调式成功。 类型系统可以降低调式成本,从而降低开放成本。 - 可选的 TS 是 JS 的超集,JS 的所有功能都能够在 TS 中使用,增加的部分是类型系统。 - 静态的 TS 代码 -> 编译 -> JS 代码 ## 如何约束类型 变量、函数、参数的返回值 ### 基本类型 - 基本类型:boolean、number、string、object、Array、void、never、null 和 undefined - null 和 undefined 可以赋值给任何类型。如果要更严格的控制,可以在 tsconfig 中配置 strict 为 true,与 strictNullChecks 为 true。开启后 null 和 undefined 就只能是自己的类型了。 ### 字面量类型 字面量类型 配合 联合类型使用,达到类似于枚举的效果 对象字面量可以更加细化的约束一个对象。 ```ts let gender: "男" | "女"; ``` ```ts type User = { name: string; age: number; }; ``` ### 扩展类型 扩展类型:类型别名,枚举,接口,类 类型别名,接口,不产生编译结果。 枚举,类,产生编译结果,枚举->编译->对象,TS 类->JS 类 TS 类中多了: - 属性列表, - 修饰符(readonly)。 - 访问修饰符(public、private、protected) 枚举:约束了类型值选择范围。 ### 类型别名和接口的区别? ## 泛型: 简单理解就是类型变量; 可以在使用时,在给功能函数赋值类型; ## 类型兼容性 鸭子辨型法 :就是根据对象的特征进行分辨。 子结构辨型法: - 基本类型:完全匹配 - 对象类型:鸭子辨型法,字面量对象直接传递时,会有严格的类型检测。 - 函数类型:参数数量可以少,但不可以多。要求返回必须返回,不要求返回,你随意。 ## 类型断言 类型断言:开发者非常清楚某个东西的类型, 但 TS 不清楚。开发者就可以通过 as 直接告诉 TS 类型。 一般用在第三方插件。