ts接口
接口是对象的状态(属性)和行为(方法)的 抽象(描述)
接口是一种类型,是一种规范,是一种规则,是一种能力,是一种约束
readonly VS const
最简单判断使用readonly还是const的方法是看要 把他作为变量还是作为一个属性,作为变量的使用const。作为属性的使用readonly
(()=>{
//定义一个接口,该接口作为person对象的类型使用,限定或者约束该对象中的属性数据
//readonly代表只读,?代表可有可无
interface IPerson{
readonly id:number //只读
name:string
age:number
sex?:string //可以没有
}
const person:IPerson={
id:1,
name:'jerry',
age:18,
sex:'女 '
}
})()
(function(){
//描述一个对象的类型
type myType = {
name:string,
age:number
}
//接口用来定义一个类的结构
//接口中的所有的属性都不能有实际的值
//接口只定义对象的属性,而不考虑实际值
//在接口中所有的方法都是抽象方法
interface myInterface{
name:string;
age:number;
}
interface myInterface{
gender:string;
}
const obj:myInterface = {//内容的属性和方法要和接口定义中的一致
name:'sss',
age:111,
gender:'男'
}
})()
(function(){
//定义类 时,可以使用类去实现一个接口;implements:实现
//实现接口就是使类满足接口的要求
interface MyInter{
name:string;
sayHello():viod;
}
class MyClass implements myInter{
name:string;
constructor(name:string){
this.name=name
}
sayHello(){
console.log("大家好~")
}
}
})()
//属性的封装
(function(){
class Person{
//TS可以在属性前添加属性的修饰符
//public修饰的属性可以在任意位置访问(修改,包括子类),默认值,
//private私有属性,只能在类内部进行访问(修改 )
// 可以在类中添加方法使得私有属性可以被外部访问
//protected 受保护的属性,只能在当前类和当前类的子类当中访问 (修改)
private name:string;
age:number;
constructor(name:string,age:number){
this.name=name;
this.age=age;
}
getName(){
return this.name
}
}
//现在属性是在对象中设置的,属性可以任意的被修改
//属性可以任意被修改将会导致对象中的数据变得非常不安全
consr per = new Person("孙悟空",18);
per.name="猪八戒";
per.age=-38;
console.log(per)
const per = new Person("孙悟空 ",18);
console.log(per.getName())
class A{
protected num:number;
constructor(num:number){
this.num = num
}
}
class B extends A{
test(){
console.log(this.num)
}
}
const b = new B(123)
b.num=123//访问不了,报错
class C{
//可以直接将属性定义在构造函数中,下边的this.name=name这种就不用写了
constructor(public name:string,public age:number){
}
}
/*和这些代码是等价的
class C{
name:string;
age:number;
constructor(name:string,age:number){
this.name=name;
this.age=age;
}
}
*/
const c = new C("aily",11)
console.log(c)
})();

浙公网安备 33010602011771号