在 TypeScript Handbook
在“将类用作接口(interface)”部分中,有一个扩展类的接口(interface)示例。class Point { ... }
interface Point3d extends Point {...}
这什么时候有用?你有这方面的实际例子吗?
最佳答案
以这个类为例:
class MyClass {
public num: number;
public str: string;
public constructor(num: number, str: string) {
this.num = num;
this.str = str;
}
public fn(arr: any[]): boolean {
// do something
}
}
您可以像这样创建一个实例:
let a1 = new MyClass(4, "hey");
但是您也可以创建一个满足相同接口(interface)的对象,如下所示:
let a2 = {
num: 3,
str: "hey",
fn: function(arr: any[]): boolean {
// do something
}
}
a1
是 instanceof
MyClass
, 而 a2
只是一个对象,但它们都实现了相同的接口(interface)。接口(interface)扩展类的意义在于,您可以获取类定义的接口(interface)并对其进行扩展。
由于语言的性质,这可能只是一种可能性,但这里有一个可能有用的例子:
class Map<T> {
private _items: { [key: string]: T };
set(key: string, value: T) { ... }
has(key: string): boolean { ... }
get(key: string): T { ... }
remove(key: string): T { ... }
}
interface NumberMap extends Map<number> {}
interface StringMap extends Map<string> {}
interface BooleanMap extends Map<boolean> {}
function stringsHandler(map: StringMap) { ... }
关于inheritance - 在 TypeScript 中,一个接口(interface)可以扩展一个类,这是为了什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39124915/