阅读 94

Typescript的interface接口类型,类的继承,(private,protected,public三种访问类型)

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


作者:何小玍
链接:https://juejin.cn/post/7028197611928551461


文章分类
代码人生
版权声明:本站是系统测试站点,无实际运营。本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 XXXXXXo@163.com 举报,一经查实,本站将立刻删除。
相关推荐