TypeScript总结:15、类型速查
TypeScript 类型速查本文用于快速查阅 TypeScript 常见类型和类型工具。遇到新的变量、参数或接口数据时可以先判断它属于哪一类再选择对应写法。一、类型声明和类型推断类型声明letname:string孙悟空;letage:number18;functionadd(a:number,b:number):number{returnab;}类型推断constmessagehello;// stringconstcount10;// numberconstenabledtrue;// boolean建议初始值明确、类型简单时可以使用类型推断。函数参数、公共函数返回值和业务边界建议显式声明。不要为了省代码把所有内容都写成any。二、基础类型速查类型示例适用场景number18普通数字bigint100n大整数stringhello文本booleantrue是或否any任意值临时兼容旧代码unknown任意值未知但需要安全检查的值void无返回值没有返回结果的函数never永不正常结束抛异常或无限循环object{}非原始对象但结构不明确nullnull明确表示空值undefinedundefined明确表示未定义三、any、unknown、void 和 neveranyletvalue:any10;valuehello;value.notExist();any会关闭大量类型检查只适合临时迁移或无法立即改造的旧代码。unknownfunctionprint(value:unknown):void{if(typeofvaluestring){console.log(value.toUpperCase());}}未知数据优先使用unknown使用前先做类型收窄。void 和 neverfunctionlog(message:string):void{console.log(message);}functionfail(message:string):never{thrownewError(message);}类型含义void函数正常执行结束但没有有意义的返回值never函数不会正常结束四、数组、元组和枚举数组constnumbers:number[][1,2,3];constnames:Arraystring[Tom,Jerry];元组constuser:[string,number][孙悟空,18];元组用于固定长度和固定顺序的数据。枚举enumStatus{Todotodo,Doingdoing,Donedone}conststatus:StatusStatus.Todo;需求类型多个同类型元素数组固定长度和顺序元组一组有名字的常量枚举五、字面量、联合类型和类型别名字面量类型letcolor:red|blue;colorred;联合类型letid:number|string;id1001;iduser-1001;类型别名typeOrderStatuspending|success|failed;typeIDnumber|string;使用类型别名可以复用复杂的联合类型和对象结构。六、类型断言和类型收窄类型断言constvalue:unknownhello;constlength(valueasstring).length;类型断言只告诉编译器如何理解值不会在运行时转换数据。类型收窄functionformat(value:unknown):string{if(typeofvaluestring){returnvalue.toUpperCase();}if(typeofvaluenumber){returnvalue.toFixed(2);}return;}来自用户输入、网络请求或文件的数据优先使用运行时判断而不是盲目断言。七、接口、类和泛型接口interfaceUser{id:number;name:string;}接口适合描述对象结构和类需要遵守的契约。类classPerson{constructor(publicname:string){}}类适合创建对象模型并封装数据和行为。泛型functionidentityT(value:T):T{returnvalue;}泛型适合在保持类型关系的同时复用函数、类和接口。八、类型选择决策表问题推荐选择这是数字、文本或布尔值吗number、string、boolean类型暂时未知但需要安全使用吗unknown函数没有返回结果吗void函数永远不会正常结束吗never需要限制为几个固定值吗字面量联合类型需要保存同类型列表吗数组需要固定长度和顺序吗元组需要描述对象结构吗接口或对象类型需要创建有属性和行为的对象吗类需要复用但类型不固定的逻辑吗泛型九、常用代码模板函数模板functionfn(parameter:Type):ReturnType{// ...}接口模板interfaceEntity{id:number;name:string;}泛型模板functionfnT(value:T):T{returnvalue;}十、本章小结先判断数据的实际含义再选择类型。不确定的数据优先使用unknown避免滥用any。对固定取值使用字面量联合类型。对象结构使用接口复用类型关系使用泛型。类型断言不是数据转换外部数据需要运行时校验。

相关新闻

最新新闻

日新闻

周新闻

月新闻