小编Dou*_*los的帖子

在elasticsearch中过滤_id范围

我试图按范围过滤弹性搜索中的_id字段(索引未启用).可能吗?如果是这样,怎么办?我在弹性搜索文档中读到,我们可以使用'id'来查询_id和类型,但我看不出如何使用范围过滤器.(我不想在_id上启用索引).

{
  "from": 0,
  "size": 20,
  "query": {
    "match_all": {}
  },
  "filter": {
        "range": {
          "_id": {
            "gt": "51f7b6b7710c42b136027581"
          }
        }
  },
  "sort": {
    "pubdate": {
      "order": "desc"
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

range filter elasticsearch

11
推荐指数
1
解决办法
2765
查看次数

是否有 Partial 的替代方法来只接受另一种类型的字段而不接受其他类型的字段?

给定具有x1共同字段的接口或类 A 和 B

interface A {
  a1: number;
  x1: number;  // <<<<
}

interface B{
  b1: number;
  x1: number;  // <<<<
}
Run Code Online (Sandbox Code Playgroud)

并给出实现 a 和 b

let a: A = {a1: 1, x1: 1};
let b: B = {b1: 1, x1: 1};
Run Code Online (Sandbox Code Playgroud)

打字稿允许这样做,即使 b1不是A 的一部分:

let partialA: Partial<A> = b;
Run Code Online (Sandbox Code Playgroud)

你可以在这里找到为什么会发生这种情况的解释:为什么 Partial 接受来自另一种类型的额外属性?

是否可以替代 Partial 只接受另一种类型的字段而不接受其他类型的字段(尽管不需要所有字段)?像StrictPartial?

这在我的代码库中造成了很多问题,因为它根本没有检测到错误的类作为参数传递给函数。

partial typescript

6
推荐指数
1
解决办法
2142
查看次数

为什么 Partial 接受另一种类型的额外属性?

给定接口 A 和 B,它们包含一个x1共同的属性

interface A {
  a1: number;
  a2: number;
  x1: number;  // <<<<
}

interface B{
  b1: number;
  x1: number;  // <<<<
}
Run Code Online (Sandbox Code Playgroud)

并给出了实现ab

let a: A = {a1: 1, a2: 1, x1: 1};
let b: B = {b1: 1, x1: 1};
Run Code Online (Sandbox Code Playgroud)

这只是通过,即使b1不属于Partial<A>

let partialA: Partial<A> = b;
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为b1不属于Partial<A>

let partialA: Partial<A> = {b1: 1, x1: 1};
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么吗?

partial typescript

5
推荐指数
1
解决办法
518
查看次数

如何引用属性的类型?

我想创建一个Projection<T>描述对象的类型,该对象的属性只能是number(0或1)或该属性类型的Projection。

例:

给定类型:

interface Person {
  name: string;
  address: Address
}

interface Address {
  street: string;
  country: string;
}
Run Code Online (Sandbox Code Playgroud)

Projection<Person>会是:

const p: Projection<Person> = { // this is a Projection<Person>
  name: 1,
  address: { // this is a Projection<Address>
    street: 0,
    country: 1
  }
}
Run Code Online (Sandbox Code Playgroud)

打字稿有可能吗?我陷入了递归投影部分

export type Projection<T> = { [K in keyof T]?: number | Projection<???> };
Run Code Online (Sandbox Code Playgroud)

使用number | Projection<any>Works,但当然不会检查声明的字段是否属于Address

typescript

2
推荐指数
1
解决办法
29
查看次数

标签 统计

typescript ×3

partial ×2

elasticsearch ×1

filter ×1

range ×1