美文网首页
interface、class、枚举

interface、class、枚举

作者: 幸宇 | 来源:发表于2022-04-19 19:23 被阅读0次

interface 和 class 的关系

interface MusicInterface{
playmusic():void
}
// implements 实现,用来约束class
class Cellphone implements MusicInterface{
// playmusic(){}
}
定义了约束后,class 必须要满足接口上的所有条件。

如果 Cellphone 类上不写 playMusic 方法,会报错。

// 处理公共的属性和方法
// 不同的类有一些共同的属性和方法,使用继承很难完成,比如汽车类也有播放音乐的功能,你可以这么做:
// 用car类继承cellphone类、找一个car类和cellphone类的父类,父类有播放音乐的方法,他们俩继承这个父类,
// 很显然这两种方法并不合理,实际上implements,问题迎刃而解
interface MusicInterface{
playmusic():void
}
class Car implements MusicInterface{
playmusic(){}
}
class Cellphone implements MusicInterface{
playmusic(){}
}
// 这样 Car 类和 Cellphone 类都约束了播放音乐的功能。
// 再比如,手机还有打电话的功能,就可以这么做,Cellphone 类 implements 两个 interface。
interface CallInterface{
makePhoneCall():void
}
class phone implements MusicInterface,CallInterface{
playmusic(){}
makePhoneCall(){}
}
// interface 来约束 class,只要 class 实现了 interface 规定的属性或方法,就行了,没有继承那么多条条框框,非常灵活。

// 约束构造函数和静态属性
// 使用 implements 只能约束类实例上的属性和方法,要约束构造函数和静态属性,需要这么写。
interface CircleStatic{
new (radius:number):void
pi:number
}
const Cirle:CircleStatic=class Circle{
// static pi:3.14
public radius:number
public constructor(radius:number){
this.radius = radius
}
}

// 枚举
// 数字枚举
enum Direction{
up=6,
down,
left,
right
}
// 数字递增、反向映射
console.log(Direction.down)
console.log(Direction.down)
// 反向映射
// 字符串枚举
enum Direction1{
up="UP",
down="DOWN"
}
const value = 'UP'
if(value === Direction1.up){
console.log("====")
}
// 类型推论
let usename="zhangxing"
// usename=function(){
// }

function printAge(num=18){
console.log(num)
return num
}
// printAge('oo')
function welecom(){
console.log('hello')
}

interface PrintAge{
(num:number):string
}
// const agel:PrintAge=printAge//很显然,定义的类型和 TS 自动推导出的类型冲突,报错:

let arr = [0,1,null,'zx']
// let pets = [new Dog(),new Cat()]

type arrItem=number|string|null
let arr1:arrItem[]=[0,0,1,null,'00']

// js 八种内置类型
let names:string='lin'
let age:number=18
let ishandsome:boolean=true
let u:undefined=undefined
let n:null=null
let obj:object={name:'zx',age:18}
// let big:bigint=100n
let sym:symbol=Symbol('xx')

// ECMAScript 的内置对象

const numst:Array<number>=[1,2,3]
const date:Date=new Date()
const err:Error=new Error('Error')
const reg:RegExp=/abc/
Math.pow(2,9)

// Dom和bom
let body:HTMLElement = document.body
let allDiv:NodeList = document.querySelectorAll('div')
document.addEventListener('click',(e:MouseEvent)=>{
e.preventDefault()
})

// TS 核心库的定义文件
// TypeScript 核心库的定义文件中定义了所有浏览器环境需要用到的类型,并且是预置在 TypeScript 中的。

相关文章

  • interface、class、枚举

    interface 和 class 的关系 interface MusicInterface{playmusic(...

  • idea 注释模板

    类 class,接口 interface,枚举 enum 注释: 方法注释: EDIT VARIABLES :

  • 枚举: 使用小汇总

    枚举enum是同class,interface同一级别的特性。 枚举enum不能被继承。 枚举示例: 有人说枚举就...

  • 枚举

    实现一个枚举: 创建一个枚举的方式很奇怪,不是 class 也不是 interface,而是 enum,这究竟是个...

  • 枚举和类的异同

    枚举是java 5新增了一个menu关键字(它与class、interface关键字的地位相同),用于定义枚举,枚...

  • Java 枚举

    enum 在 Java 中使用 enum 关键字来定义枚举类,其地位与 class、interface 相同在 J...

  • Item 22: Use interfaces only to

    When a class implements an interface, the interface serve...

  • 适配器模式

    Convert the interface of a class into another interface t...

  • Adapter Pattern

    Convert interface of a class into another interface clien...

  • Set

    继承结构 Collection (interface)Set (interface)HashSet (class)...

网友评论

      本文标题:interface、class、枚举

      本文链接:https://www.haomeiwen.com/subject/eyrlertx.html