从接口获取类型并删除数组

时间:2020-05-27 18:44:43

标签: javascript typescript

我们有这样定义的接口:

interface IInitialInterface {
   stack: string,
   overflow: {
      a: string,
      b: string
   }[],
}

如何仅使用overflow属性删除数组来创建类型?如果我这样做:

type TypeSearched = IInitialInterface['overflow']

然后我得到:

type TypeSearched = {
    a: string,
    b: string
}[]

但是我想删除数组。

谢谢。

2 个答案:

答案 0 :(得分:2)

在这种情况下,未“键入”溢出属性,您可以这样做

interface IInitialInterface {
   stack: string,
   overflow: IOverflow[],
}

interface IOverflow {
   a: string,
   b: string
}

然后,您可以直接参考IOverflow而不是通过IInitialInterface来引用

type TypeSearched: IOverflow; 

答案 1 :(得分:1)

要获取数组的成员类型,可以使用\s进行深入研究。这将返回如果您使用任何数字访问该数组将返回的类型。

ArrayType[number]

但是,更干净的方法是从命名的小片段中构建片段,而不是分解大片段。

type TypeSearched = IInitialInterface['overflow'][number]
// { a: string; b: string; }