当前位置: 首页 > 后端技术 > Node.js

TS知识点记录

时间:2023-04-03 15:29:27 Node.js

1.declare关键字declare:告诉TS编译器你保证这些变量和模块的存在,并声明对应的类型。编译时不需要提示错误。2.Vue3报错cannotassignthetypestringGivethetypeRefconstrealtime=ref('');realtime='errui';//报错//取值时,ref只有唯一属性值,要赋值必须加上valuerealtime.value='errui';//纠正三,constassertionconstx={text:“你好”}作为常量;TypeScript3.4引入了一种称为constassertionliteralvalue的新结构。它的语法是一种类型断言,当通过用const替换类型名称(例如123asconst)来构造新的文字表达式时,我们可以向语言发出信号,表明不应扩展该表达式中的文字类型(例如:不能从"hello"tostring)示例:CountActions是这两个接口的联合。constsetCount=(n:number)=>{return{type:"SET_COUNT",payload:n,};};constresetCount=()=>{return{type:"RESET_COUNT",};};typeCountActions=ReturnType|}ReturnType;我们从动作创建者函数setCount和resetCount的返回类型推断出一个很好的动作联合。4.类型断言手动指定一个值的类型语法:valueastypeorvalue1.类型断言只能“欺骗”TypeScript编译器,无法避免运行时错误。相反,滥用类型断言可能会导致运行时错误interfaceCat{name:string;run():void;}interfaceFish{name:string;swim():void;}functionswim(animal:Cat|Fish){(animalasFish).swim();}consttom:Cat={name:'Tom',run(){console.log('run')}};swim(tom);//未捕获的类型错误:animal.swim不是函数`2。添加一个父类Assert作为一个更具体的子类='数字'){返回真;}returnfalse;}3.将任何类型断言为任何类型。一方面,任何东西都不能被滥用;只有掌握好它们之间的平衡点(这也是TypeScript的设计理念之一),才能发挥出TypeScript的最大价值。5.Keyofoperatorkeyofoperator:是一个联合类型,将一个类型映射到它所有的成员名。接口人{名称:字符串;年龄:数字;性别:字符串;}类型P=keyofPerson;//“名称”|“年龄”|"gender"//可以看到keyof将对象??类型Person映射为创建了一个联合类型//所以我们可以更方便的操作这个联合类型,也可以用泛型继承/扩展类型来写复杂点classStudent{constructor(私人信息:人){}getInfo(key:T):Person[T]{returnthis.info[key];}}//T为泛型,通过keyof获取Person的成员name的联合类型,即"name"|“年龄”|"gender"//这样就实现了限制键值的输入。此时key只能输入为“name”|“年龄”|"gender"//返回结果不会是undefined。编译时获取类型接口Person{name:string,age:number,}letperson:Person={name:'tao',age:18}//都是同一个类型p1=typeofpersontypep2=PersonSeven,interface定义函数的形状!==-1;}采用函数表达式|界面在定义函数时,等号左边的类型限制可以保证以后给函数名赋值时参数个数、参数类型、返回值类型不变。也可以使用包含泛型的接口来定义扩展的泛型接口函数的形状:interfaceCreateArrayFunc{(length:number,value:T):Array;}letcreateArray:CreateArrayFunc;createArray=function(长度:数字,值:T):Array{让结果:T[]=[];for(leti=0;i