即使我没有实现接口

时间:2015-06-27 13:09:50

标签: typescript

我有以下界面:

interface IUpdateBusinessAddressRequest extends IReturn<IBusinessAddressResponse>
{
    BusinessId?: number;
    AddressId?: number;
    AddressLine1?: string;
    AddressLine2?: string;
    AddressLine3?: string;
    TownCity?: string;
    County?: string;
    Postcode?: string;
    Country?: string;
    IsPrimary?: boolean;
}

这节课:

export class UpdateBusinessAddressRequest implements IUpdateBusinessAddressRequest  {

}

我没有在课堂上实现这个界面,但无论如何我的Typescript都会编译。

我在另一个类中有这个方法:

test(request: IDeleteBusinessRequest) {
    //stuff
}

IDeleteBusinessRequest 是另一个界面。我可以像没有编译错误那样调用它:

this.test(new UpdateBusinessAddressRequest());

UpdateBusinessAddressRequest 没有实施 IDeleteBusinessRequest ,但我没有收到任何编译错误。

例如,在C#中,这不会编译。我只是期待过多的打字稿,或者我做错了什么?

我正在使用Visual Studio 2015 RC和最新的Typescript编译器。

由于

1 个答案:

答案 0 :(得分:2)

问题是问号“?”,这意味着该属性是可选的,这就是没有编译器错误的原因。

我刚刚在TS游乐场尝试了你的代码并删除了“?”在BusinessId上并收到以下错误:

类'UpdateBusinessAddressRequest'错误地实现了接口'IUpdateBusinessAddressRequest'。 “UpdateBusinessAddressRequest”类型中缺少“BusinessId”属性