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

TypeScript如何声明至少含指定属性其余任意的函数参数类型

TypeScript 约束对象必填属性的类型声明方法

不要给参数设置any类型——any会跳过所有类型校验,自然无法触发缺失属性的报错。你只需要在参数类型里明确声明必填的p属性即可,TypeScript 采用结构化类型规则,会自动校验传入对象是否满足该必填项要求,同时允许对象携带其他任意额外属性,完全匹配你的需求。

正确写法

直接在参数位置声明必填属性结构即可:

function ofInterest(param: { p: unknown }) {
  // 此处可正常访问 param.p,TS 会提供对应类型提示
  const target = param.p
  // 其余业务计算逻辑
}

如果你明确知道p属性的具体类型,直接把unknown替换成对应类型即可,比如p: string、p: number都可以。

如果这个参数结构需要在多处复用,也可以把必填结构抽成独立的接口或类型别名,效果完全一致:

interface IHasP {
  p: unknown
}

function ofInterest(param: IHasP) {
  const target = param.p
  // 业务逻辑
}

校验效果

  • 传入对象包含p属性时,即使携带其他额外属性,类型检查也会正常通过:
// 合法:包含必填p属性,额外的q、r属性不会触发报错
const validParam = { p: 'demo value', q: '', r: 0 }
ofInterest(validParam)
  • 传入对象缺失p属性时,TS 会直接抛出类型错误:
const invalidParam = { q: '', r: 0 }
// 抛出类型错误:类型"{ q: string; r: number; }"中缺少属性"p"
ofInterest(invalidParam)

内容的提问来源于stack exchange,提问作者Osmanys Fuentes-Lombá

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 12:21:34