鸿蒙HarmonyOS4.0应用开发从入门到实战(完结)

dvfdf · · 107 次点击 · · 开始浏览    

鸿蒙HarmonyOS4.0应用开发从入门到实战(完结)

<<<下栽科>>>:789it.top/3228/

TypeScript 基本语法核心概念(无代码版)

一、TypeScript 与 JavaScript 的核心区别

TypeScript(TS)是

JavaScript 的超集

,在 JS 基础上增加了

静态类型系统

,支持类型注解、接口定义、泛型等特性,最终编译为纯 JS 运行。核心目标是

在开发阶段捕获类型错误

,提升代码可读性和可维护性。

二、基础类型系统

  1. 基础数据类型

  • any:关闭类型检查(慎用,失去 TS 意义)。

  • unknown:安全的 “未知类型”(需类型断言后使用)。

  • never:表示永不存在的值(如抛出异常的函数返回类型)。

  • 数组(Array<T> 或 T[],如 number[] 表示数字数组)。

  • 元组([T1, T2],固定长度和类型的数组,如 [string, number])。

  • 枚举(enum,为数值或字符串定义具名常量,如 enum Color { Red, Green })。

  • 原始类型:布尔(boolean)、数值(number,含整数和浮点数)、字符串(string)、空值(void,函数无返回值时用)、nullundefined

  • 复杂类型

  • 特殊类型

  • 类型注解

  • 显式声明变量、函数参数、返回值的类型,如:
    let count: number = 0;(变量类型)、function add(a: number, b: number): number { ... }(函数参数和返回值类型)。

  • 类型推断:TS 可自动推导类型(如 let str = "hello",推断为 string),减少冗余注解。

  • 联合类型与交叉类型

  • 联合类型(T | U):表示值可以是多种类型之一,如 string | number(字符串或数字)。

  • 交叉类型(T & U):表示同时具备多种类型的所有属性,如 { name: string } & { age: number }(同时有 name 和 age 属性的对象)。

三、接口(Interface)与类型定义

  1. 接口(Interface)

  • 对象接口:interface User { id: number; name: string; }(规定对象必须包含 id 和 name)。

  • 函数接口:interface AddFn { (a: number, b: number): number; }(规定函数参数和返回值类型)。

  • 可扩展(用 extends 继承其他接口),支持可选属性(name?: string)和只读属性(readonly id: number)。

  • 定义对象、函数或类的 “形状”(Shape),用于约束结构:

  • 类型别名(Type Alias)

  • 为任意类型起别名,包括基础类型、联合类型、对象类型等:
    type ID = number | string;(定义 ID 为数字或字符串)、
    type Point = { x: number; y: number };(等价于接口,但更灵活,可用于原始类型)。

四、函数与类型

  1. 函数参数类型

  • 支持 可选参数(a: number, b?: number))、默认参数(a: number, b: number = 0))、剩余参数(...args: number[]),收集所有剩余参数为数组)。

  • 函数返回值类型

  • 显式声明返回类型(如 (): void 表示无返回值),或依赖类型推断。

  • 函数重载

  • 定义多个函数签名,根据参数类型返回不同类型,解决 TS 对复杂函数的类型推断问题(如根据输入参数返回不同格式的结果)。

五、泛型(Generics)

  • 定义 “类型可变” 的函数、类或接口,避免重复代码,提升复用性:

    • 泛型函数:function identity<T>(arg: T): T { return arg; }T 为类型参数,调用时自动推断或显式指定)。

    • 泛型类:class Queue<T> { enqueue(item: T) { ... } }(支持不同类型的队列)。

    • 泛型约束:通过 extends 限制类型参数的范围(如 T extends Number 表示 T 必须是数字类型的子类型)。

六、类(Class)与面向对象

  1. 类的定义

  • public(公共,默认)、private(私有,仅限类内访问)、protected(受保护,子类可访问)。

  • readonly(只读属性,初始化后不可修改)。

  • 支持 修饰符

  • 继承(class Child extends Parent),实现接口(class User implements Person)。

  • 静态成员

  • 静态属性和方法(static 修饰),通过类名直接调用(如 Class.staticMethod())。

七、模块与命名空间

  1. 模块(Module)

  • 支持 ES6 模块语法(import/export),每文件为一个模块,避免全局命名冲突:
    import { User } from './user';(导入模块中的类型或对象)、
    export default function fn() { ... }(导出默认函数)。

  • 命名空间(Namespace)

  • 用于组织代码,避免全局污染,通过 namespace 定义:

    typescript

    namespace Utils {  export function add(a: number, b: number) { ... }}// 使用:Utils.add(1, 2);

     

八、类型断言(Type Assertion)

  • 手动告诉编译器 “这个值的类型是确定的”,解决无法自动推断的场景:

    • const el = document.getElementById('app') as HTMLDivElement;(断言为 HTMLDivElement)。

    • 两种形式:as Type 或 <Type>value(在 JSX 中只能用 as)。

九、编译与工具链

  1. tsconfig.json 配置

  • target:编译为哪个版本的 JS(如 ES6、ES2020)。

  • module:模块系统(如 ESNextCommonJS)。

  • strict:开启严格类型检查(推荐启用,捕获更多错误)。

  • outDir:编译后 JS 文件输出目录。

  • 核心选项:

  • 类型检查工具

  • 编辑器集成(如 VS Code 实时类型提示)、命令行工具(tsc 编译并检查类型错误)。

总结:TypeScript 语法的核心价值

TypeScript 通过

类型系统

将错误提前到开发阶段,结合接口、泛型、模块等特性,让大型项目的代码结构更清晰、可维护性更强。核心语法围绕 “

类型安全

” 展开,学习时需重点掌握类型注解、接口定义、泛型应用,以及如何利用类型系统提升代码质量。

107 次点击  
加入收藏 微博
添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传