Javascript 如何按任意顺序键入数组

Javascript 如何按任意顺序键入数组,javascript,arrays,typescript,Javascript,Arrays,Typescript,我正在制作一个过滤器方法,它接收数组中的一些参数 static all(filter?: opts) { console.log(filter) } opts类型如下: type opts = Partial<['id', 'name', 'namePlural', 'group']>; 但这并不是: Categories.all(['id', 'group']) 它要求我将字符串name改为group 有什么方法可以做到这一点吗?似乎'id',name',na

我正在制作一个过滤器方法,它接收数组中的一些参数

  static all(filter?: opts) {
    console.log(filter)
  }
opts
类型如下:

type opts = Partial<['id', 'name', 'namePlural', 'group']>;
但这并不是:

Categories.all(['id', 'group'])
它要求我将字符串
name
改为
group


有什么方法可以做到这一点吗?

似乎
'id',name',namemultral',group'
是要筛选的对象的属性(比如
Person

在这种情况下,您可以执行以下操作(请参阅):

这种方法的优点是,如果在
Person
中添加或删除字段,则无需更改任何内容

否则,您可以执行@jcalz推荐的操作(请参阅):


请注意,如果需要的话,这两种方法都不限于唯一值。

数组是否适合您?这允许您的两个用例。。。。它还允许重复,如
Categories.all(['id','id','id'])
。我知道你可能不想要复制品,但复制品的存在真的会破坏什么吗?如果副本可以的话,我会写下来作为答案。如果它们不是,你能详细说明用例以显示什么中断吗?真的谢谢你,这种方式比我试图做的要好。
Categories.all(['id', 'group'])
// assumed declared elsewhere
interface Person {
  id: string;
  name: string;
  namePlural: string;
  group: string;
}

function all(filter?: opts) {
  console.log(filter);
}

type opts = (keyof Person)[];

all(["id"]);
all(["id", "group"]);
function all(filter?: opts) {
  console.log(filter);
}

type opts = ('id' | 'name' | 'namePlural' | 'group')[];

all(["id"]);
all(["id", "group"]);