typescript简单使用

    技术2025-03-31  20

    export const aa=function():void{//ts 模块导出 const arr:Array<any>=[1,2,3]//数组定义 any隐式类型 在tsconfig配置里面可以忽略 console.log(arr[0]) } export const asy=async function():Promise<any>{ function Show():Promise<any>{ return new Promise((resolve,rejects)=>{ resolve({ user:"liu", pass:"123" }) }) } return await Show() } let bo:boolean=false let un:undefined=undefined let nu:null=null let str:string='sa' let num:number=12 let ar:Array<number>=[1,2] let a:number[]=[12,21] let text:string=`${str}` //数据类型 还有symbol let a:symbol=Symbol('123') let b:object={[a]:'123'}symbol是可迭代的 let y:[string,number]//定义固定变量类型 y=['12',12] y[0] y[1]=123 enum Color{red=1,green=2,blue=3}//枚举 可以自己赋值初始化也可以不赋值初始化 //不赋值就是自增 let c:Color=Color.red //console.log(Color[c])//还可以映射 let na:string=Color[2] let as:any=[1,'12']; (function():void{ })(); (function():number{ return 1 })() let obj:object=[1,2] let ob:object=function(){} interface deep{//接口 用于规定传参 name:string, age:number, job?:string//?是可以传也可以忽略 } function admin(a:deep):object{ return a } admin({name:'123',age:12}) interface no{ readonly who:string//readonly可读 和defineProtype里面的遍历读取修改设置 } let p:no={who:'12'} let r:number[]=[1,23,3] let g:ReadonlyArray<number>=r//两种数组定义形式 interface fn{ read(a:number):number//接口函数返回类型 } class Xa implements fn{ read(a:number):number{ return a } } interface a{ str:string } interface Ta extends a{ num:number//接口继承 可以 多 接口接触 ,逗号隔开 } let v=<Ta>{ } v.str='12'; let n:Ta={str:'12',num:12};//两种接口对象字面量 class rr{ constructor(){ } }; class Str extends rr{//类继承 static a:string='12';//私有变量用类名加属性名访问 constructor(){ super() } getName(a:string):string{ return a } but():void{ console.log(Str.a) } } abstract class An{//抽象类 abstract sp():void//抽象函数 }; function l(...q:number[]):void{//...q是动态解析传入参数数组 console.log(q[0]) } l(1,2) interface lk{ str:string, arr:number[] } interface Tas{ str:string, arr:number[], cd:object, get(this:Tas):()=>lk//这个是在实现接口对象时候保持类this的一致 } let asa:Tas={ str:'123', arr:[1,2,3], cd:{ }, get:function(this:Tas){ return ()=>{ return {str:this.str,arr:[123]} } } } interface len{ length:number } function lei<T extends len>(arg:T):T{ return arg; }//T为任意类型变量 len为约束 不再是任意类型 需要符合条件 // 因为number不包含长度length属性 lei({length:12,value:'12'}) function Pro<T>(obj:T,key){ return obj[key] } let x={a:1} Pro(x,"a") class Las<T>{ s:T } let my=new Las<number>(); enum E{ a=12, b='as', c='fs', d='a' }//运行时JavaScript的对象 默认自增 或者自己初始化 ; let gg:number=E.a; console.log(E[gg]) //兼容 赋值 如果两个对象存在至少一个相同属性可以赋值 //函数比较只要形参类型有一个相同 少的比多的 就会正确 而多比少则报错 因为多出来的参数找不到类型 let at:symbol=Symbol('123') let gt:object={ [at]:12 }
    Processed: 0.010, SQL: 9