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

TypeScript中如何为可变字符串参数+末尾Expression参数的函数定义类型?

为layerProp函数编写TypeScript类型定义

要匹配你给出的JavaScript实现逻辑(任意数量string参数,最后一个为Expression类型),可以通过元组剩余参数语法来精准约束参数结构,具体实现如下:

首先,先声明你的Expression复杂类型(根据实际结构替换):

// 示例Expression类型,根据实际需求调整结构
type Expression = {
  type: string;
  value: any;
  // 其他复杂属性...
};

然后给layerProp函数添加类型定义:

function layerProp(...args: [...string[], Expression]): void {
  const fields = args.slice(0, -1);
  const fallbackExpression = args.slice(-1)[0];
}

类型说明

  • [...string[], Expression] 是TypeScript的元组剩余语法:
    • ...string[] 表示前面可以接收0个或任意多个string类型参数;
    • 最后一个参数必须严格匹配Expression类型,确保参数结构和你的JavaScript逻辑完全对齐。

这样定义后,TypeScript会自动校验参数:

  • 合法调用:layerProp("name", "age", { type: "default", value: 0 })
  • 非法调用(最后一个参数不是Expression):layerProp("name", "age", 0) → 会触发类型报错

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 19:03:23