【发布时间】:2019-11-12 20:43:21
【问题描述】:
通过组合接口创建一个带区分字段的类型?
这是我的代码:
/*
* Missing changeFn indicates delete
*/
type IChangeRequestPromiseProxy<TEntity extends IBaseEntity> =
| IUpdateRequestPromiseProxy<TEntity>
| IDeleteRequestPromiseProxy;
interface IUpdateRequestPromiseProxy<TEntity extends IBaseEntity> {
id: Id;
resolve(value: IPersistence<TEntity>): void;
reject(reason: any): void;
changeFn(entity: TEntity): IPersistence<TEntity>;
}
interface IDeleteRequestPromiseProxy {
id: Id;
resolve(value: void): void;
reject(reason: any): void;
changeFn(entity: never): never;
}
let promiseProxy: IChangeRequestPromiseProxy<TEntity> = { id, resolve, reject };
这是我得到的错误。要点似乎是Property 'changeFn' is missing in type:
让 promiseProxy: IChangeRequestPromiseProxy Type '{ id: 细绳;解决:(值?:IPersistence | 承诺喜欢> |未定义)=> 无效;拒绝: (原因?:任何)=> 无效; }' 不可分配给类型 'IChangeRequestPromiseProxy'。属性“changeFn”是 缺少类型'{ id:字符串;解决:(值?:IPersistence |承诺喜欢> |未定义)=> 无效;拒绝: (原因?:任何)=> 无效; }' 但在类型中是必需的 'IUpdateRequestPromiseProxy'.ts(2322) Queue.service.ts(16, 5): 这里声明了'changeFn'。
为什么这不起作用?
【问题讨论】:
标签: typescript