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;}