接口
1.1 接口定义
interface Person{
name:string;//属性
age:number;//属性
sex?:string;//可空属性
[propname:string]:any;//可选参数
speak():string;//方法
}
可空参数在实现时可以不传参数,直接使用时返回为undefined,不会报错。
let person1={
name:'Mr.Li',
age:18,
speak():string{return 'hello!'}}
可选参数,可自由设置,如下hat
let person1={
name:'Mr.Li',
age:18,
sex:'男',
hat:'black hat'
speak():string{return 'hello!'}}
1.2使用接口作为参数预定义
const result = (person:Person)=>{
conslose.log( 'name:${person},age:${person.age}${person.speak}')
}
可对多个参数的方法的进行抽离,简化代码。
1.3接口的继承与实现
接口的继承
interface Girl extends Person{
dress():string;
}
类的实现
class SichuanGirl implements Girl{
name:string;
age:number;
sex?:string;
[propname:string]:any;
speak():string{
return "";
}
dress():string{
return "" ;
}
}
类
2.1 类的定义
class Student{
//参数定义
talk = 'Good moring!';
//方法定义
speak(){
return this.talk;
}
//private参数
private sex:string;
//set与get
set sex(value:string){
this.age=age
}
get sex():string{
return this.sex
}
//只读参数
private readonly name:string;
//protected参数
protected proValue:string;
//public参数
public pubValue:string;
//静态参数
static className:string;
//静态方法
static speak(){
console.log('static fuction');
}
}
2.2类的继承
class Person{
public name:string;
protected age:number;
//构造方法
constructor(age:number){
this.age = age ;
}
public speak(){
console.log('Hello!');
}
}
class teacher extend Person{
private sex:string;
set sex(value:string){
this.age=age;
}
get sex():string{
return this.sex;
}
//使用父类的构造方法:super.xxxx
constructor(sex:string){
super(18);
this.sex= sex;
}
public speak(){
super.speak();
console.log('I am a teacher!');
}
private readonly name:string;
protected proValue:string;
public pubValue:string;
static className:string;
static speak(){
console.log('static fuction');
}
}
2.3类的构造
let person=new Person(18);
抽象类
abstract class Anim{
//抽象参数
abstract params:number;
//抽象方法
abstract eat():void;
//普通方法
run(){
console.log("run with 4 foots")
}
}
class Dog extends Anim{
params:number;
eat():void{
console.log("eat meat")
}
}
实现抽象类必须实现 和.