You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何约束TypeScript类setFields方法的props参数为类自身属性?

如何约束setFields的props参数为MyOb类的属性

当然可以啦!在TypeScript里我们可以借助内置工具类型轻松实现这个约束,让我给你一步步说明:

  • 首先修改你的类,给setFields方法的props参数加上类型约束,用Partial<MyOb>来限定传入的只能是MyOb类已有的属性:
class MyOb {
  foo: string;
  setFields(props: Partial<MyOb>) {
    Object.assign(this, props);
  }
}
  • 测试效果:

    • new MyOb().setFields({ foo: 'bar' }) → 编译顺利通过,因为foo是MyOb的合法属性
    • new MyOb().setFields({ x: 'bar' }) → 直接编译失败,TypeScript会提示x不是MyOb的属性,完全符合你的预期
  • 小补充:Partial<T>是TypeScript的内置工具类型,它会把传入类型T的所有属性转为可选状态,这样你既可以只传部分属性,又能严格限制传入的属性必须是目标类已有的。如果需要强制要求传入所有属性,直接用MyOb代替Partial<MyOb>就行,但显然Partial更适配setFields这种批量设置部分属性的场景。

内容的提问来源于stack exchange,提问作者lambinator

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.22 10:08:16