首页 > 其他分享 >Ts有趣现象

Ts有趣现象

时间:2022-12-16 09:22:24浏览次数:42  
标签:name Ts animalInterface 现象 sing 有趣 bark string

今日学习Ts的接口,我发现了一个有趣的Ts怪像,直接上代码

interface animalConstructor {
    new (name:string,sing:string):animalInterface
}

interface animalInterface {
    bark():void;
}
class Dog implements animalInterface{
    name:string
    sing:string
    constructor(n:string,sing:string) {
        this.name = n
        this.sing = sing
    }
    bark() {
        console.log(`${this.name}${this.sing}`)
    }
}
class Cat {
    name:string
    sing:string
    constructor(name:string,sing:string) {
        this.name = name
        this.sing = sing
    }
    bark(): void {
        console.log(`${this.name}${this.sing}`)
    }
}
/**
 * 我发现个有趣的事情,即便类没有申明implement animalConstructor,但是自身的Constructor和animalConstructor一样,
 * 也没有申明implement animalInterface ,只是存在同样的方法,也可以正常执行;Cat类什么也没申明实现,却可以正常运行
 * */
function animalBark(animal:animalConstructor,n:string,s:string):animalInterface {
    return new animal(n,s)
}
let dog = animalBark(Dog,'狗','汪汪')
let cat = animalBark(Cat,'猫','喵喵')
dog.bark()
cat.bark()

标签:name,Ts,animalInterface,现象,sing,有趣,bark,string
From: https://www.cnblogs.com/JarryShu/p/16986515.html

相关文章

  • [LeetCode] 1785. Minimum Elements to Add to Form a Given Sum
    Youaregivenanintegerarray nums andtwointegers limit and goal.Thearray nums hasaninterestingpropertythat abs(nums[i])<=limit.Return the......
  • 网络工具netstat与ss
    建议使用ss命令,2001年的时候netstat1.42版本之后就没更新了,之后取代的工具是ss。netstat命令在很多场景下比较慢。ss可以显示跟netstat类似的信息,但是速度却比netstat快......
  • TS 之 reduce
    一.函数介绍Array.reduce()方法是对数组进行遍历,返回一个计算后的值使用方法:Array.reduce((acc,cur,idx,src)=>{},initialValue)callback回调函数......
  • SOLIDWORKS二次开发插件SolidKits助力企业实现BOM自动化
    对于制造业企业来说,产品设计、结构设计很重要,同样重要的还有物料清单。只有内容全面且准确的BOM表,才能够让采购人员了解到,这批产品中我需要购买哪些零部件,购买的数量是多少......
  • TIL:Git Squash Commits
    背景比如开发某个feature,可能需要好几天,但是每天都需要提交代码(只是假设)那commit的粒度如何控制,可以看看这个讨论:https://www.v2ex.com/t/623219可是每天提交的信息好......
  • 15 个很棒的 Bootstrap UI 界面编辑器
    [导读]​​BootstrapMagic​​​​BootSwatchr​​​​BootstrapLiveEditor​​​​FancyBoot​​ ​​StyleBootstrap​​​​Lavish​​​​BootstrapThemeRol......
  • LTspice: Copy and Paste Between Schematics
    不得不说LTSpice真的是界面方面太不Friendly了,这个问题让我抓狂了一下午,不过最终还是再官网找到了答案关键的诀窍就是copy后不要点击左键然后直接点击另外一个原理图窗口......
  • bootstrap页面标题缩略图
    关于作者:郑云飞,程序员Java(web前端,web后端,oracle数据库ormysql数据库)本文主要来讲解以下内容:1.大屏幕介绍;2.页面标题;3.缩略图;4.警示框;5.Well;6.总结。大屏幕介绍轻量,灵活的......
  • bootstrap导航条
    关于作者:郑云飞,程序员Java(web前端,web后端,oracle数据库ormysql数据库)艺名:天放本文主要来讲解以下内容:1.默认的导航条;2.表单;3.按钮;4.文本;5.非导航的链接;6.组件对齐;7.固定在......
  • bootstrap输入框组
    关于作者:郑云飞,程序员Java(web前端,web后端,oracle数据库ormysql数据库)艺名:天放本文主要来讲解以下内容:1.基本案例;2.尺寸;3.复选框和单选框;4.附加按钮;5.带下拉菜单的按钮;6.分......