typescript - 打字稿:省略不会警告额外的道具
问题描述
我有一个问题Omit
。它不是在抱怨额外的道具。看看这个示例代码:
interface Model {
prop:number;
dangerProp: number;
}
interface SafeModel extends Omit<Model, "dangerProp"> {}
这可以按预期工作,但是如果SafeModel
对此进行更改:
interface SafeModel extends Omit<Model, "dangerPropMisspeled"> {}
尽管该道具没有退出,但任何地方都没有错误。Pick
总是检查相关性,但Omit
似乎没有,但这不是我真实代码的选项。
这让我很困扰,如果有人Model
在没有注意到SafeModel
应该更改的情况下更改,它可能会导致我在工厂或其他地方出现一些错误。
那么,有没有办法强制Omit
检查相关性?eslint 解决方案对我来说是一个有效的解决方法。
解决方案
在我的项目中,我使用了一组可以根据需要工作的被覆盖的实用程序。我的版本Omit
看起来像这样。希望它可以帮助你。看下面或在操场上测试
type CustomOmit<T, K extends keyof T> = Pick<T, Exclude<keyof T, K>>
interface Model {
prop:number;
dangerProp: number;
}
interface SafeModel extends CustomOmit<Model, "dangerProp"> {}
interface SafeModel extends CustomOmit<Model, "dangerPropMisspeled"> {}
必须适用于TS 2.8及更高版本。发布Exclude
的地方
请让我知道它是否有效)
推荐阅读
- pixi.js - 如何在pixijs中将图形转换为精灵
- javascript - JQuery将特定表行中的所有数据与约束相加
- unity3d - Oculus/Unity - OVRCameraRig 未设置为示例场景中的对象实例?
- c# - DOB(date) 错误地保存在 Oracle DB 中
- node.js - 如何使用nodejs,express和mongoose在一个函数中保持两个操作的一致性
- azure - IN azure traffic 如何实现以下案例
- javascript - Axios POST 请求在 Chrome 控制台中显示为 GET
- javascript - 如何立即调用 IIFE 以防止它污染全局范围?
- python - Tensorflow:TypeError:预期的二进制或unicode字符串,得到
dtype=字符串> - tsql - 你如何在sql server中实现关于历史的数据库?