TypeScript如何在for..of循环中内联声明并解构元组数组
你可以直接对for...of遍历的测试数组使用类型断言,将类型声明为对应的元组数组,不需要单独提取变量,也不需要在解构左侧加类型注解,就能绕过TS的语法限制。
方法1:显式类型断言
直接给循环内的数组加上[string, string[]][]类型断言:
for (let [input, expected] of [ ['<h1>test</h1>', ['</h1>']], ['<h1><b>test</b></h1>', ['</h1>', '</b>']], ['<h1><b>test</b> lol</h1>', ['</h1>']], ] as [string, string[]][]) { const result = functionToTest(input); for (let i in expected) { if (result[i] !== expected[i]) { throw Error("test failed") } } }
方法2:常量断言(TS 3.4+适用)
如果不需要修改测试数据,可以用as const做常量断言,TS会自动推断出精确的元组类型,不需要手动写类型定义:
for (let [input, expected] of [ ['<h1>test</h1>', ['</h1>']], ['<h1><b>test</b></h1>', ['</h1>', '</b>']], ['<h1><b>test</b> lol</h1>', ['</h1>']], ] as const) { const result = functionToTest(input); for (let i in expected) { if (result[i] !== expected[i]) { throw Error("test failed") } } }
注意:as const推断出的是只读类型,如果后续需要修改测试数组内的值,使用第一种显式声明可变元组数组的写法即可。
内容的提问来源于stack exchange,提问作者Cédric Van Rompay
相关产品推荐
相关产品推荐

