在打字稿3.5中,Omit
helper is added。假设第三方API提供以下接口和功能:
Omit
我想为interface Params {
n: number;
s: string;
b: boolean;
on: number;
os: string;
ob: boolean;
}
function api(params: Params) {...}
写一个包装器,这样我只需要向我的代码库的其余部分公开有趣的属性。
api
由于使用了function wrapper(params: Omit<Params, 'on' | 'os' | 'ob'>) {
(params as Params).on = 1;
(params as Params).os = 'foo';
(params as Params).ob = false;
api(params as Params);
}
,因此对我来说这似乎是一种骇客。实现这一目标的最优雅的方法是什么,以便
as
)分配了错误的类型,则类型检查可以捕获。这可以在当前实现中捕获。params.on = 'bar';
的类型检查都可以捕获。)在当前实现中不会捕获。您有两个我可以想到的选择:
on
使用第二个选项,类型定义可能看起来更复杂,但是它们为包装函数的用户提供了更大的灵活性。这样可以有效地将省略的属性转换为可选属性,因此它们可以提供包装参数的替代值。