shirliey
类和接口的区别:接口中只声明成员方法,不做实现;类声明并实现方法。
//属性接口
interface Config {
    color ?: string;
    width: number;
    [propName: string]: any;
}
function test(value: Config){
    console.log(value);
}
test({
    color: \'white\', //color属性可以省略不写
    width: 600,
    height: 50
});
//函数类型接口
interface FunctionConfig {
    (source: string, subString: string): string;
}

let myFunction: FunctionConfig;
myFunction = function(s1: string, s2: string): string{
    return (s1+s2);
};
console.log(myFunction(\'hello\', \',www\'));
//可索引接口
interface UserArray {
    [index: number]: string;
}
let arr1: UserArray = [\'aaa\', \'bbb\'];
console.log(arr1);

类:

//
class A {
    name: string;
    constructor(message: string) {
        this.name = message;
    }
    sayName(){
        return this.name;
    }
}
class B extends A {
    constructor(name: string){
        super(name);
    }
    sayHi(){
        return \'Hello,\'+this.name;
    }
}
let a = new A(\'John\');
let b = new B(\'Sunny\');
console.log(a.sayName());
console.log(b.sayName());
console.log(b.sayHi());
//公有属性、私有属性、受保护的修饰符
abstract class C {
    constructor(public name: string){}
    public sayHi(){
        return \'History\';
    }
}
class D extends C {
    static origin = 11;
    constructor (name: string){
        super(name);
    }
    public sayName() {
        return this.name+D.origin;
    }
}
let d = new D(\'hello\');
console.log(d.sayName());
//抽象类-抽象类一般不会被实例化,做为其他派生类的基类使用
//抽象类中的抽象方法不包含具体的实现,并且必须在派生类中实现
abstract class Media {
    constructor(public name: string){}
    abstract sayName(): void;
}
class Phone extends Media {
    constructor(name: string){
        super(name);
    }
    sayName(){
        return \'Haha\'+this.name;
    }
}
let e = new Phone(\'John\');
console.log(e.sayName());

 

分类:

技术点:

相关文章:

  • 2021-08-15
  • 2021-11-13
  • 2021-09-04
  • 2021-05-23
  • 2021-12-23
  • 2021-06-29
猜你喜欢
  • 2021-10-22
  • 2021-07-23
  • 2021-12-05
  • 2021-12-05
  • 2021-12-05
相关资源
相似解决方案