在TypeScript中如何强制继承的类实现方法

穆斯塔法·德威卡(Mustafa Dwekat)

我需要强制该类实现某些方法,例如onCreate(),在其他语言中,例如php我们可以看到以下内容:

<?php

// Declare the interface 'Movement'
interface MovementEvents
{
    public function onWalk($distance);
}

// Declare the abstract class 'Animal'
abstract class Animal implements MovementEvents{

    protected $energy = 100;

    public function useEnergy($amount){
        $energy -= $amount;
    }

}


class Cat extends Animal{

    // If I didn't implement `onWalk()` I will get an error
    public function onWalk($distance){

        $amount = $distance/100;

        $this->useEnergy($amount)

    }

}

?>

请注意,在我的示例中,如果我未实现onWalk()该代码将无法工作,并且您将收到错误,但是当我执行TypeScript以下操作时:

// Declare the interface 'Movement'
interface MovementEvents
{
    onWalk: (distance)=>number;
}

// Declare the abstract class 'Animal'
abstract class Animal implements MovementEvents{

    protected energy:number = 100;

    public useEnergy(amount:number):number{

        return this.energy -= amount;

    }

}


class Cat extends Animal{

    // If I didnt implment `onWalk()` I will get an error
    public onWalk(distance:number):number{

        var amount:number = distance/100;

        return this.useEnergy(amount);

    }

}

没有错误将显示我是否实现了on walk方法,但是如果我没有onWalk()Animal类中实现它将给出一个错误,我需要与phpin相同TypeScript

菲丹·哈卡(Fidan Hakaj)

您可以Animal使用abstract要在子类中强制使用的方法关键字和相同关键字来声明您的类。

abstract class Animal {
    abstract speak(): string;
}

class Cat extends Animal {
    speak() {
        return 'meow!';
    }
}

您可以在《TypeScript手册》中找到有关抽象类和方法的更多信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何在调用自己的植入之前强制继承类的方法实现调用基本方法?

Delphi OOP强制从继承的类重新实现方法

在父类中实现继承的方法

如何从Typescript中扩展的类中实现方法?

Typescript 在方法中设置类本身的值,从基类继承

让继承的类实现超类的方法

TypeScript-如何继承类并覆盖lambda方法

在 Python 中的“模板方法模式”继承中,对从基类继承的方法使用派生类上已实现方法的签名

TypeScript中的多个类继承

TypeScript:继承类中静态方法的自引用返回类型

将协议添加到超类中,这将强制从其继承的其他类实现协议

如何实现继承的方法链接?

在继承的类中强制继承成员的类型安全

如何调用右侧定义的类中存在的方法。Python继承。多重继承。Dimond场景python继承

如何在TypeScript中实现clone()方法?

使用TypeScript,我如何强制一个类实现正确的功能规范?

如何将 INotifyPropertyChanged 的实现和 DataGrid 类继承到自定义的 DataGrid 类中?

如何强制我的类的任何子类始终调用它们所覆盖的父类的实现方法?

如何强制后代类实现抽象功能?

如何重载继承类中的方法以便基类看到继承的版本?

C ++虚拟继承和访问公共虚拟方法,该方法的实现在继承受保护的类中

是不是必须强制在Child抽象类中实现所有接口方法,而必须强制在Grand Child类中实现所有接口方法?

如何在TypeScript的类原型中实现迭代器?

继承类中的重载方法

如何从Odoo中的纯Python类继承来修改方法?

如何覆盖继承的嵌套类中存在的虚拟方法

如何在pytest中测试类的继承方法

对于Ruby中的类方法,继承如何工作?

如何使仅父方法在PHP的类继承中运行?