簡體   English   中英

打字稿擴展不需要的接口

[英]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

如果您希望SuccessMessage是可選的,您可以這樣做:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM