IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> Typescript的interface接口类型,类的继承,(private,protected,public三种访问类型) -> 正文阅读

[JavaScript知识库]Typescript的interface接口类型,类的继承,(private,protected,public三种访问类型)

「这是我参与11月更文挑战的第2天,活动详情查看:2021最后一次更文挑战

interface 接口类型

只接收字符串或方法,跟type类型别名有一定区别,type可以直接声明类型

interface Person {
  	// readonly name: string				// readonly 只读类型,不可写
    name: string
    age?: number										// ?: 可有可无
    [propName: string]: any					// 除了name和age,别的类型,只要键是string值是any就行
    say(): string										// 可以存在方法
}

interface Teacher extends Person {		// 类型继承
 	teach(): string 
}

interface Sayhi {					// 定义函数类型
 	(word: string): string
}
    
const getPersonName = (person: Person): void => {
  	console.log(person.name)
}
  
const setPersonName = (person: Person, name: string): void => {
  	person.name = name
}
  
const person = {
  	name: 'dell',
  	sex: "male",
  	say() {
      	return "say hello"
    }
}

getPersonName(person)
setPersonName(person, 'lee')

class User implements Person {		// 定义user这个类去implements(应用)person这个接口
  	name: "lee"
    say() {
      	return "say hello"
    }
}

const say: Sayhi = (word: string) => {
  	return word
}

类的继承

class person {
 	name = "dell"
	getName() {
    	return this.name
  }
}

class Teacher extends person {
 	getTeacherName() {
   	return "lee" 
  }
  // super 继承父类的方法等
  getName() {
   	return super.getName() + "lee" 
  }
}

const person = new Teacher()
console.log(person.getTeacherName())  // lee
console.log(person.getName())  // delllee

private, protected, public 三种访问类型

public公共调用方法

允许在类的内外均可被调用

// public      允许在类的内外被调用
class Person {
    public name: string
    public sayHi() {
        console.log(this.name)  // 在类的内部 被调用
        console.log("hi")
    }
}

// 在类的外部被调用
const person = new Person()
person.name = "dell"
console.log(person.name)  // dell
person.sayHi()      // hi

private

只允许在类的内部被调用,如果在类的外部调用就是错误的

// private, protected, public  三种访问类型

// private      允许在类内被使用  类外调用就是错误
class Person {
    private name: string
    public sayHi() {
        console.log(this.name)  // 在类的内部 被调用 dell
        console.log("hi")
    }
}

// 在类的外部被调用
const person = new Person()
person.name = "dell"        // 报错,无法编译
console.log(person.name)  //  报错,无法编译
person.sayHi()      // hi

protected

与private相反,只允许在类内及继承的子类中使用

// private, protected, public  三种访问类型

// public       允许我在类的内外被调用
// private      允许在类内被使用  类外调用就是错误
// protected    允许在类内及继承的子类中使用
class Person {
    protected name: string
    public sayHi() {
        console.log(this.name)  // 在类的内部 被调用 dell
        console.log("hi")
    }
}

class Teacher extends Person {
    public sayBye() {
        console.log(this.name)  // dell
    }
}

// 在类的外部被调用
const person = new Person()
person.name = "dell"        // 报错,无法编译
console.log(person.name)  //  报错,无法编译
person.sayHi()      // hi

最后

公众号:小何成长,佛系更文,都是自己曾经踩过的坑或者是学到的东西

有兴趣的小伙伴欢迎关注我哦,我是:何小玍。大家一起进步鸭

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-11-09 19:23:29  更:2021-11-09 19:25:50 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/13 14:05:53-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码