arrays - typescript :为每个元素输入不同类型的数组

标签 arrays typescript casting jestjs

我想定义一个类型化数组,为第一个元素指定一个类型,为第二个元素指定另一个类型,依此类推...

事实上,我正试图摆脱以下强制转换:

const cases = [
  [ 'http://gmail.com', false ],
  [ '/some_page', true ],
  [ 'some_page', false ]
]

describe("'isInternalLink' utility", () => {
  test.each(cases)(
    "given %p as argument, returns %p", (link, result) => {
      expect(
        isInternalLink(<string>link)
      ).toEqual(
        <boolean> result
      )
    }
  )
})

如您所见,cases 中的每个元素都是一个数组,其中第一个元素是字符串,第二个元素是 bool 值...

明确一点,我不想要一个string | 的数组。 boolean 类型,我想要一个数组,其第一个元素是字符串,第二个元素是 bool 值。

知道如何改进吗???

最佳答案

cases 是一个 Array , cases 中的每个元素都是一个 Tuple , 所以如果你这样定义 cases:

const cases: [string, boolean][] = ...

...或者像这样:

const cases: Array<[string, boolean]> = ....

...然后 link 将是一个 stringresult 将是一个 boolean 并且您的测试可以简化为:

describe("'isInternalLink' utility", () => {
  test.each(cases)(
    "given %p as argument, returns %p", (link, result) => {
      expect(isInternalLink(link)).toEqual(result)
    }
  )
})

关于arrays - typescript :为每个元素输入不同类型的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57847321/

相关文章:

kotlin - 如何在 Kotlin 中将 Int 转换为 Char

c++ - 在 C++ 中传递包含静态数组的结构

javascript - 在 Typescript 上监听窗口事件(Angular2)

Angular2如何在不点击的情况下触发(点击)事件

java - 为每个循环使用基类类型或派生类类型

java - 如何在 Java 中将 10 乘以 "Integer"对象?

c++ - 错误 : cannot specify explicit initializer for array

c - 试图理解 Knuth 的排列算法

c++ - 创建大量对象 C++

typescript - 在 typescript 中使用 globalThis