typescript extend an interface as not required typescript extend an interface as not required javascript javascript

typescript extend an interface as not required


A bit late, but Typescript 2.1 introduced the Partial<T> type which would allow what you're asking for:

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


If you want Success and Message to be optional, you can do that:

interface IAppVersion {    OSVersionStatus: number;    LatestVersion: string;    Success?: boolean;    Message?: string;}

You can't use the extends keyword to bring in the ISuccessResponse interface, but then change the contract defined in that interface (that interface says that they are required).


As of TypeScript 3.5, you could use Omit:

interface IAppVersion extends Omit<ISuccessResponse, 'Success' | 'Message'> {  OSVersionStatus: number;  LatestVersion: string;  Success?: boolean;  Message?: string;}