Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typescript/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
TypeScript-按泛型类型筛选_Typescript - Fatal编程技术网

TypeScript-按泛型类型筛选

TypeScript-按泛型类型筛选,typescript,Typescript,我有一个对象,其中有些值是数组,有些值不是数组。我想过滤掉数组,我看到这是以如下类似的方式完成的,但我想对所有数组进行过滤,在它不是类型的情况下,而不是在它是类型的情况下,而不仅仅是传递特定的类型。能做到吗 Object.values(inputsOptions).filter((obj: any): obj is not Array => { return obj instanceof Array; }).forEach(obj =>{ //

我有一个对象,其中有些值是数组,有些值不是数组。我想过滤掉数组,我看到这是以如下类似的方式完成的,但我想对所有数组进行过滤,在它不是类型的情况下,而不是在它是类型的情况下,而不仅仅是传递特定的类型。能做到吗

Object.values(inputsOptions).filter((obj: any): obj is not Array => {
        return obj instanceof Array;
    }).forEach(obj =>{
        //Every object has style property but arrays do not
        obj.style = {marginLeft: "1em"};
    });

刚刚注意到我使用了obj is数组,而我的意思正好相反,但现在我已经更改了它。尽管如此,问题仍然存在。

TypeScript中没有
不是
断言,而且如果有,并且
obj
任何
但不是
数组
,这并不意味着它是具有样式属性的对象

如果您知道obj只能是一个数组或具有可变
样式
属性的对象,那么您可以断言您所拥有的:

(您还应该使用
Array.isArray
而不是
instanceof Array
,请参阅。)


TypeScript中没有
is not
断言,而且如果有,并且
obj
any
,但不是
数组
,这并不意味着它是具有样式属性的对象

如果您知道obj只能是一个数组或具有可变
样式
属性的对象,那么您可以断言您所拥有的:

(您还应该使用
Array.isArray
而不是
instanceof Array
,请参阅。)


请考虑修改上面的代码以构成一个适合于独立的IDE,就像其他人可以自己演示这个问题一样。这将增加你得到的任何答案实际上解决你所看到的问题的机会。请考虑修改上面的代码以构成适合于单独的IDE,就像其他人可以自己演示这个问题一样。这将增加你得到的任何答案都能解决你所看到的问题的机会。谢谢!这正是我所需要的。谢谢!这正是我所需要的。
Object.values({})
  .filter((value: unknown): value is { style: unknown } => {
    return !Array.isArray(value);
  })
  .forEach((object) => {
    object.style = { marginLeft: "1em" };
  });