我有以下界面:
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编译器。
由于
答案 0 :(得分:2)
问题是问号“?”,这意味着该属性是可选的,这就是没有编译器错误的原因。
我刚刚在TS游乐场尝试了你的代码并删除了“?”在BusinessId上并收到以下错误:
类'UpdateBusinessAddressRequest'错误地实现了接口'IUpdateBusinessAddressRequest'。 “UpdateBusinessAddressRequest”类型中缺少“BusinessId”属性。