【发布时间】:2021-11-24 19:00:33
【问题描述】:
以下代码示例在 javascript 中运行良好:
const f = ()=> { return[true,"text",11]; }
const [active,status,numberEleven] = f();
const twelve = numberEleven + 1;
但是,const twelve = numberEleven + 1; 在 typescript 中引发错误,因为 numberEleven 可以是字符串、布尔值或数字:
我试图改变函数返回类型:
const f = ()=> {
const res: [boolean, string, number] = [true, warning, score];
return res;
}
但它没有用。然后我尝试像这样更改解构数组的类型:
const [active,status,numberEleven]: [boolean, string, number] = f();
但是这种方法导致了以下错误:
Type '(string | number | boolean)[]' is not assignable to type '[boolean, string, number]'.
Target requires 3 element(s) but source may have fewer.
那么,在 typescript 中解构包含不同类型元素的数组的最佳方法是什么?
谢谢!
【问题讨论】:
-
您的第二个选项有效 (typescriptlang.org/play?#code/…) 另一个版本是
as const: typescriptlang.org/play?#code/… -
请考虑查看How to Ask 的指南以及minimal reproducible example 的构成要素。当您显示代码并且某些东西不起作用时,仅仅说“但它不起作用”并没有帮助。预计您将准确描述什么不起作用...是否有错误消息?如果是这样,它是什么,它发生在哪里?是否有一些意想不到的输出?什么和在哪里?由于您说“不起作用”的版本实际上在 TS Playground 中确实有效,因此现在问题无法重现,因此除非您纠正它,否则该问题可能会被关闭。祝你好运!