以下是我的TypeScrip函数:

function foo({
  a,
  b,
  c
}:{
  a, //delete this line?
  b, //delete this line
  c:number
}){
  //code deleted for simplicity
}

该函数使用非 struct 化对象参数.该函数还指定了其中一个c:number的类型,但不指定其他两个ab的类型

我的问题是:有没有更简洁的方法来写这个函数签名?或许可以删除上述各行,代之以一个通用定义?

推荐答案

你可以使用Record<PropertyKey, any>intersection(代表任何物体)和{ c: number }.这允许您分解任何c类型仍为number的成员.

declare function foo({
  a,
  b,
  c,
//^? (parameter) c: number
  x,
  y,
  z,
}: Record<PropertyKey, any> & { c: number }): void;

TypeScript Playground

Typescript相关问答推荐

类型缩小对(几乎)受歧视的unions 不起作用

如何使用另一个类型的属性中的类型

当使用`type B = A`时,B的类型显示为A.为什么当`type B = A时显示为`any `|用A代替?

Redux—Toolkit查询仅在不为空的情况下添加参数

打印脚本丢失函数的泛型上下文

为什么有条件渲染会导致material 自动完成中出现奇怪的动画?

使用2个泛型类型参数透明地处理函数中的联合类型

是否可以基于对象的S属性值[]约束对象的其他属性值用于类型化的对象数组?

Angular 17子路由

迭代通过具有泛型值的映射类型记录

为什么我的查询钩子返回的结果与浏览器的网络选项卡中看到的结果不同?

在React中定义props 的不同方式.FunctionalComponent

为什么S struct 类型化(即鸭子类型化)需要非严格类型联合?

错误:NG02200:找不到类型为';对象';的其他支持对象';[对象对象]';.例如数组

有没有办法在Reaction组件中动态导入打字脚本`type`?

如何将对象的字符串文字属性用作同一对象中的键类型

从泛型对象数组构造映射类型

TS 排除带点符号的键

基于泛型类型的条件类型,具有条目属性判断

redux-toolkit、createAsyncThunk 错误