我想定义一个类型化数组,为第一个元素指定一个类型,为第二个元素指定另一个类型,依此类推...
事实上,我正试图摆脱以下强制转换:
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
将是一个 string
而 result
将是一个 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/