[英]typescript extend an interface as not required
我有兩個接口;
interface ISuccessResponse {
Success: boolean;
Message: string;
}
和
interface IAppVersion extends ISuccessResponse {
OSVersionStatus: number;
LatestVersion: string;
}
我想將 ISuccessResponse 接口擴展為不需要; 我可以覆蓋它,但還有其他選擇嗎?
interface IAppVersion {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
我不想這樣做。
有點晚了,但是 Typescript 2.1 引入了Partial<T>
類型,它可以滿足您的要求:
interface ISuccessResponse {
Success: boolean;
Message: string;
}
interface IAppVersion extends Partial<ISuccessResponse> {
OSVersionStatus: number;
LatestVersion: string;
}
declare const version: IAppVersion;
version.Message // Type is string | undefined
如果您希望Success
和Message
是可選的,您可以這樣做:
interface IAppVersion {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
您不能使用extends
關鍵字引入ISuccessResponse
接口,但隨后更改該接口中定義的協定(該接口表示它們是必需的)。
從 TypeScript 3.5 開始,您可以使用Omit
:
interface IAppVersion extends Omit<ISuccessResponse, 'Success' | 'Message'> {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
您的基本接口可以將屬性定義為可選:
interface ISuccessResponse {
Success?: boolean;
Message?: string;
}
interface IAppVersion extends ISuccessResponse {
OSVersionStatus: number;
LatestVersion: string;
}
class MyTestClass implements IAppVersion {
LatestVersion: string;
OSVersionStatus: number;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.