猿问

关于typescript 使用类类型语法 new()?

在使用ts时,我看到有这样的语法,但是没明白这样定义的好处以及为什么这样定义?
functioncreate(c:{new():T;}):T{
returnnewc();
}
classBeeKeeper{
hasMask:boolean;
}
classZooKeeper{
nametag:string;
}
classAnimal{
numLegs:number;
}
classBeeextendsAnimal{
keeper:BeeKeeper;
}
classLionextendsAnimal{
keeper:ZooKeeper;
}
functioncreateInstance(c:new()=>A):A{
returnnewc();
}
createInstance(Lion).keeper.nametag;//typechecks!
createInstance(Bee).keeper.hasMask;//typechecks!
呼如林
浏览 3686回答 2
2回答

慕哥9229398

如果不使用new():T你把这个功能写出来试试。create函数的参数是一个Class,返回值是这个Class的实例。c:T的意思是,c的类型是T,但这个函数的目的不是要求c的类型是T,而是要求c就是T。试比较一下:letnum=newNumber(1);fn(Number)fn(num)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答