打字稿不需要扩展接口
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;
}
我不想这样做。
如果您希望 Success
和 Message
是可选的,您可以这样做:
interface IAppVersion {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
你不能使用extends
关键字引入ISuccessResponse
界面,但是更改该接口中定义的合同(该接口表示它们是必需的)。
您的基本接口可以将属性定义为可选:
interface ISuccessResponse {
Success?: boolean;
Message?: string;
}
interface IAppVersion extends ISuccessResponse {
OSVersionStatus: number;
LatestVersion: string;
}
class MyTestClass implements IAppVersion {
LatestVersion: string;
OSVersionStatus: number;
}
有点晚了,但是 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
从 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;
}
我想将 ISuccessResponse 接口扩展为不需要; 我可以覆盖它,但还有其他选择吗?
interface IAppVersion {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
我不想这样做。
如果您希望 Success
和 Message
是可选的,您可以这样做:
interface IAppVersion {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}
你不能使用extends
关键字引入ISuccessResponse
界面,但是更改该接口中定义的合同(该接口表示它们是必需的)。
您的基本接口可以将属性定义为可选:
interface ISuccessResponse {
Success?: boolean;
Message?: string;
}
interface IAppVersion extends ISuccessResponse {
OSVersionStatus: number;
LatestVersion: string;
}
class MyTestClass implements IAppVersion {
LatestVersion: string;
OSVersionStatus: number;
}
有点晚了,但是 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
从 TypeScript 3.5 开始,您可以使用 Omit
:
interface IAppVersion extends Omit<ISuccessResponse, 'Success' | 'Message'> {
OSVersionStatus: number;
LatestVersion: string;
Success?: boolean;
Message?: string;
}