核心内容摘要
17.c.now:革新数字时代的创作与协作新范式
类型声明通过:类型明确指定变量的类型。
示例leta:string;letb:number;letc:boolean;functiondemo(x:number,y:number):number{returnxy;}
类型推断TypeScript 会根据赋值自动推断变量类型。
示例letd-99;// 推断为 numberdfalse;// 报错
类型总览JavaScript 原始类型string、number、boolean、null、undefined、bigint、symbol、objectTypeScript 扩展类型void、never、unknown、any、enum、tuple自定义类型type、interface
常用类型
1 字面量类型值只能是特定的字面量。
示例leta:你好;letgender:男|女;
2any任意类型放弃类型检查。
显式与隐式leta:any;// 显式letb;// 隐式推断为 any
3unknown类型安全的any赋值给其他类型需先断言或类型判断。
示例leta:unknownhello;letx:string;xaasstring;// 断言
4never表示永远不会有值。
常用于函数返回值或类型推断中的不可能分支。
示例functionerror(message:string):never{thrownewError(message);}
5void表示空或undefined常用于无返回值的函数。
示例functiondemo():void{console.log(no return);}
6object表示非原始类型对象、数组、函数等。
通常使用具体结构进行限制letperson:{name:string;age?:number};
7tuple元组固定长度的数组各位置类型可不同。
示例lett:[string,number];t[hello,123];
8enum枚举定义一组具名常量。
示例enumColor{Red,Blue,Black}letc:ColorColor.Red;
自定义类型使用type定义类型别名。
示例typeStudent{name:string;age:number;grade:1|2|3;};
抽象类用abstract声明不能实例化只能被继承。
可包含抽象方法和普通方法。
示例abstractclassPerson{abstractspeak():void;walk(){console.log(walking...);}}
接口用interface定义可重复声明合并。
可用于限制类结构或作为类型使用。
与抽象类的区别接口只能有抽象成员类使用implements实现接口示例interfacePerson{name:string;speak():void;}
属性修饰符修饰符说明readonly只读不可修改public公开默认protected仅在类及子类中可访问private仅在类内部可访问
泛型用于在定义时不指定具体类型使用时再确定。
可约束泛型范围。
示例functionidentityT(arg:T):T{returnarg;}functiongetLengthTextends{length:number}(arg:T):number{returnarg.length;}本文涵盖类型系统、自定义类型、类与接口、泛型等核心概念适用于快速复习与查阅。