Typescript从省略类型重构原始类型

问题描述 投票:0回答:1

在打字稿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); } ,因此对我来说这似乎是一种骇客。实现这一目标的最优雅的方法是什么,以便

  1. 类型检查合格
  2. 如果我为省略的属性(例如as)分配了错误的类型,则类型检查可以捕获。这可以在当前实现中捕获。
  3. 如果我错过任何遗漏的属性(例如,包装器中未分配params.on = 'bar';的类型检查都可以捕获。)在当前实现中不会捕获。
typescript
1个回答
0
投票

您有两个我可以想到的选择:

on

使用第二个选项,类型定义可能看起来更复杂,但是它们为包装函数的用户提供了更大的灵活性。这样可以有效地将省略的属性转换为可选属性,因此它们可以提供包装参数的替代值。

© www.soinside.com 2019 - 2024. All rights reserved.