TypeScript 里 class 和 method 的 abstract 修饰符

简介: TypeScript 里 class 和 method 的 abstract 修饰符

abstract

Classes and Members


TypeScript 中的类、方法和字段可能是抽象的。


抽象方法或抽象字段是一种尚未提供实现的方法。 这些成员必须存在于抽象类中,不能直接实例化。


抽象类的作用是作为实现所有抽象成员的子类的基类。 当一个类没有任何抽象成员时,它被称为具体的。


看个例子:


abstract class Base {
  abstract getName(): string;
  printName() {
    console.log("Hello, " + this.getName());
  }
}
const b = new Base();
Cannot create an instance of an abstract class.

我们不能用 new 实例化 Base,因为它是抽象的。 相反,我们需要创建一个派生类并实现抽象成员:


class Derived extends Base {
  getName() {
    return "world";
  }
}
const d = new Derived();
d.printName();

8

请注意,如果我们忘记实现基类的抽象成员,我们会得到一个错误:

class Derived extends Base {
Non-abstract class 'Derived' does not implement inherited abstract member 'getName' from class 'Base'.
  // forgot to do anything
}

4

Abstract Construct Signatures

有时,您希望接受某个类构造函数,该函数生成从某个抽象类派生的类的实例。


例如,您可能想编写以下代码:


function greet(ctor: typeof Base) {
  const instance = new ctor();
Cannot create an instance of an abstract class.
  instance.printName();
}

TypeScript 正确地告诉你你正在尝试实例化一个抽象类。 毕竟,考虑到greet的定义,编写这段代码是完全合法的,最终会构造一个抽象类:


// Bad!
greet(Base);
相关文章
|
1月前
|
JavaScript 前端开发 Java
TypeScript 类 第一章【类,继承,修饰符】
TypeScript 类 第一章【类,继承,修饰符】
44 1
|
1月前
|
JavaScript
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
TypeScript【类的继承、访问修饰符、readonly 修饰符、存取器、实例方法与静态方法、实例属性与静态属性、静态属性、抽象类】(三)-全面详解(学习总结---从入门到深化)
28 0
|
8月前
|
JavaScript
TypeScript-类方法修饰符和TypeScript-类可选属性和参数属性
TypeScript-类方法修饰符和TypeScript-类可选属性和参数属性
38 0
|
8月前
|
JavaScript
TypeScript-类属性修饰符
TypeScript-类属性修饰符
39 0
|
10月前
|
JavaScript
TypeScript 类(class)与修饰符的详细使用
TypeScript 类(class)与修饰符的详细使用
91 0
|
JavaScript
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解 (上)
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解 (上)
|
JavaScript
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解 (下)
TypeScript类与继承和修饰符public 、private 、protected 的详细讲解
|
JavaScript
TypeScript修饰符 public private static的详细讲解
TypeScript修饰符 public private static的详细讲解
|
JavaScript
TypeScript 里 class 和 method 的 abstract 修饰符
TypeScript 里 class 和 method 的 abstract 修饰符
113 0
TypeScript 里 class 和 method 的 abstract 修饰符
|
JavaScript
TypeScript基础入门 - 类 - 公共、私有与受保护的修饰符
转载 TypeScript基础入门 - 类 - 公共、私有与受保护的修饰符 项目实践仓库 https://github.com/durban89/typescript_demo.git tag: 1.1.1 为了保证后面的学习演示需要安装下ts-node,这样后面的每个操作都能直接运行看到输出的结果。
1611 0