letssing什么意思中文翻译,lets sing

  

  本文以实战代码为主。   

  

  字符串字面值类型允许你指定字符串只能拥有的确切值。例如:   

  

  letmyFavoritePet: "狗";我最喜欢的狗如果把myFavoritePet赋予任何其他字符串都会给出一个错误。   

  

  此时,可以把这种情况视为特有的类型别名。   

  

  把类型别名和联合类型放一起,你就会得到一个类似枚举的行为。如下所示   

  

  typeSpecies='猫' | '狗' | '鸟;functionbuyPet(pet:Species,name:string){/*.*/}买宠物(my favorite pet/* ' dog ' asdefinedabove */,' Rocky ');//Argumentoftype""Snake " "是notassignabletoparameterotype“物种”.//buyPet('蛇','叶');   

  

  字符串字面类型可以用来区分函数的重载。为了演示这个功能,我们让布衣宠物函数返回一个宠物类型。并为宠物扩展出几种类型,如下所示:   

  

  interfacePet {种:种;名称:字符串吃();walk();睡眠();} interfacatextendspet {物种:‘猫’;} interfaceDogextendsPet {物种:‘狗’;} interfaceBirdextendsPet {物种:‘鸟’;sing();}//接口《洛奇》错误地扩展了接口.//属性“物种”的类型不兼容.键入“摇滚”是notassignabletotype " species "//interfaceRockextendsPet {//species : " rock ";//}   

  

  然后编写函数的声明实现和重载:   

  

  functionbuyPet(pet:Species,name : string): pet;functionbuyPet(pet:'cat ',name : string): cat;功能购买宠物(宠物: '狗,名:串):狗;功能买宠物(宠物:‘鸟’,名字:串):鸟;functionbuyPet(pet:Species,name:string):Pet{n   

bsp;if (pet === "cat") {        return {            species: "cat",            name: name,            eat: function () {                console.log(`${this.name} eats.`);            }, walk: function () {                console.log(`${this.name} walks.`);            }, sleep: function () {                console.log(`${this.name} sleeps.`);            }        } as Cat;    } else if (pet === "dog") {        return {            species: "dog",            name: name,            eat: function () {                console.log(`${this.name} eats.`);            }, walk: function () {                console.log(`${this.name} walks.`);            }, sleep: function () {                console.log(`${this.name} sleeps.`);            }        } as Dog;    } else if (pet === "bird") {        return {            species: "bird",            name: name,            eat: function () {                console.log(`${this.name} eats.`);            }, walk: function () {                console.log(`${this.name} walks.`);            }, sleep: function () {                console.log(`${this.name} sleeps.`);            }, sing: function () {                console.log(`${this.name} sings.`);            }        } as Bird;    } else {        throw `Sorry we do not have a ${pet}. Would you like to buy a dog?`;    }}接着,我们实现其它相关函数和使用示例:

  

function petIsCat(pet: Pet): pet is Cat {    return pet.species === "cat";}function petIsDog(pet: Pet): pet is Dog {    return pet.species === "dog";}function petIsBird(pet: Pet): pet is Bird {    return pet.species === "bird";}function playWithPet(pet: Pet) {    console.log(`Hey ${pet.name}, lets play.`);    if (petIsCat(pet)) {        // pet is now from type Cat (pet: Cat)        pet.eat();        pet.sleep();        // Error: Type '"bird"' is not assignable to type '"cat"'.        // pet.species = "bird";        // Error: Property 'sing' does not exist on type 'Cat'.        //  pet.sing();    } else if (petIsDog(pet)) {        // pet is now from type Dog (pet: Dog)        pet.eat();        pet.walk();        pet.sleep();    } else if (petIsBird(pet)) {        // pet is now from type Bird (pet: Bird)        pet.eat();        pet.sing();        pet.sleep();    } else {        throw "An unknown pet. Did you buy a rock?";    }}let dog = buyPet(myFavoritePet /* "dog" as defined above */, "Rocky");// dog is from type Dog (dog: Dog)// Error: Argument of type '"rock"' is not assignable to parameter of type "'cat' | "dog" | "bird".// Type '"rock"' is not assignable to type '"bird"'.// buyPet("rock", "Rocky");playWithPet(dog);    // Output: Hey Rocky, lets play.    // Rocky eats.    // Rocky walks.    // Rocky sleeps. 至此,我们对字面值类型的综合使用就完成。接下来,我们在控制台利用ts-node插件来运行此文件(strLiteralType.ts)将会得到我们想要的结果。

  

动起手来练一练吧。拜托朋友们,记得转发分享啊^_^

相关文章

管理员 管理员
在区块链的世界,每个人都是一个节点。
最近文章
  • letssing什么意思中文翻译,lets sing
  • ok平台是真是假,ok平台清除交易信息
  • luna币能涨到多少价格,luna币能涨到多少估值
  • idm下载器怎么改语言,idm下载器怎么改中文
  • owllook官方下载,owllook官网
  • apex免费获得皮肤,apex免费的箱子有多少
  • sushi币预挖,shiba币是什么时候上线的
  • facebook中文怎么读音,facebook中的广告删除了还能找回来吗
  • hello venus,hello女神
  • raft怎么研究引擎,raft怎么免费下载最新版
  • person是什么意思中文翻译成,person是什么样子的人
  • icp备案查询官网,icp备案什么意思
  • 2021房价会越来越便宜吗,2021房价会涨到多少
  • filecoin代币分配方案,filecoin代币交易平台
  • int是啥,int百科
  • 2020年大众迈腾价格表,2020年大众cc价格
  • okt币价格表,okt币价格今日行情走势
  • only女装和伊芙丽哪个好,only女装黑色上衣
  • rain rain rain,rain check什么意思
  • pi币官方网站在哪里看,pi币官方网站是什么
  • mostly中文意思是什么,mostly的中文意思
  • sum是什么意思中文,sum是什么意思c语言
  • basemetal珍珠项链价格,basemetal
  • nitro显卡,nitro是什么品牌
  • filecoin网络升级带来哪些变化,filecoin网络会存储哪些数据
  • ign,ig vs g2
  • coinlist怎么切换中文,coinlist怎么设置中文
  • 2020新版纸币对比,2020新版绝代双骄
  • nft实时行情怎么看,nft实名认证安全吗
  • 2020年的新冠肺炎,2020年的新版霍元甲主题曲
  • pi币更换推荐人的邀请码,pi币更新1.6.1
  • ps5和xbox发售日期,ps5和xbox series x买哪个
  • nmax155能跑长途吗,nmax155加什么机油
  • pig币会涨到0.1美元吗,pig币未来的升值空间
  • apex英雄加载界面闪退,apex英雄配置
  • 2019款cla180引进国内了没有,2019款cla测评
  • edc币注册,edc币什么意思
  • omg币最新行情走势,omg币最新信息
  • 840除以28的简便方法,840除以28的竖式怎么写
  • ok的搞笑图片大全,ok的搞笑动图