TS笔记

37 阅读1分钟
  • 公式: 变量名:类型 = 赋值
  • 联合类型(或的关系)
  • 缺点:返回值提示类型很模糊
function reverse_union(x:string | number):string|number|void{
}
  • 函数重载
function reverse(x:number):number{}
function reverse(x:string):string{}
function reverse(x:string | number):string|number|void{}

  • 可索引接口
interface RandomKeyArr{
    [propName: number]:string
}
const obj3:RandomKeyArr = ['1','2']

interface RandomIntroduce{
    name:string,
    age:number,
    [propName:string]:string | number | undefined
}
const randomPerson:RandomIntroduce = {
    name:'wang',
    age:23,
    like:'swim',
    cook:'good'
}
  • 类实现接口
interface IWake{
    wakeUp():void
}
interface IMusic{
    playMusic():void
}
//类实现接口
class Alarm implements IWake,IMusic{
    wakeUp():void{
    }
    playMusic():void{}
}
  • 接口继承接口,好处:代码复用,接口可以随意组合
interface ISmartAudio extends IWake,IMusic{
    controlSomething():void
}
class Smart implements ISmartAudio{
    controlSomething():void{}
     wakeUp():void{
    }
    playMusic():void{}
}
    
  • 抽象类和接口的区别
    • 抽象类:类是单一继承
    • 类可以实现多个接口
  • 泛型:使用时才能确定类型
function printT<T>(arg:T):T{
}
printT<number>(123)
 泛型约束接口
interface ILength{
    length:number
}
function logLength<T extends ILength>(arg:T):T{
}