两个界面首先是ICat
,第二个是IMammal
。
IMammal
延伸ICat
。 Cat
中的IMammal
属性是否有能力访问ICat
接口的所有属性?
export interface ICat {
Cateye: string[];
Color: string;
Name: string;
}
export interface IMammal extends ICat {
Description: string;
HasImage: boolean;
CatGroup: string[];
**Cat: ICat[]**;
}
基本上,我如何在Typescript中实现多个接口继承?
答案 0 :(得分:7)
我想也许ICat应该扩展IMammal,因为Cat是一个哺乳动物,哺乳动物不需要任何ICat引用,想想如果你想有一天添加IDog:
export interface IMammal {
Description: string;
HasImage: boolean;
}
export interface ICat extends IMammal {
Cateye: string[];
CatGroup: string[];
Color: string;
Name: string;
}
class Cat implements ICat {
Cateye: string[];
Color: string;
Name: string;
Description: string;
HasImage: boolean;
CatGroup: string[];
}
const pusur:ICat = new Cat();
pusur.Name = "Pusur";
pusur.Description = "Likes lasagna";
pusur.CatGroup = ["Cartoon cat"];
答案 1 :(得分:1)
您对接口使用implements
,使用extends
进行类继承。 implements
允许您传递由类实现的接口列表。
请注意,通常它不重要,因为实现接口的所有属性和方法的类自动与接口兼容,无论它是否明确implements
接口,但列出显式接口至少意味着编译器会告诉您是否未能正确实现它们。
interface A {
a: string;
}
interface B {
b: string;
}
class Foo implements A,B {
a: string;
b: string;
}
function foo(b: B) {}
function bar(a: A) {}
const f = new Foo();
foo(f);
bar(f);