我对 Omit
有问题。它不是抱怨额外的道具。
看看这个示例代码:
interface Model {
prop:number;
dangerProp: number;
}
interface SafeModel extends Omit<Model, "dangerProp"> {}
这按预期工作,但是如果更改 SafeModel
:
interface SafeModel extends Omit<Model, "dangerPropMisspeled"> {}
尽管 prop 没有退出,但任何地方都没有错误。 Pick
总是检查相关性,但 Omit
似乎不会,但这不是我的真实代码中的一个选项。
这让我很困扰,如果有人在没有注意到 Model
应该更改为的情况下更改了 SafeModel
,可能会导致我在工厂或其他地方出现一些错误。
那么,有没有办法强制 Omit
检查相关性? eslint 解决方案对我来说是一个有效的解决方法。
答案 0 :(得分:2)
在我的项目中,我使用了一组按我需要工作的覆盖工具。
我的 Omit
版本看起来像这样。希望对你有帮助。往下看或在playground
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
的版本
请让我知道它是否有效)