【发布时间】:2020-07-03 14:40:57
【问题描述】:
经过长时间阅读问题和查看文档后,我仍然需要帮助。 我的问题很简单。我想定义一个函数,当一个数组作为参数给出时返回一个数组,但 Typescript 从不让我返回想要的值。
我简化了我想在这里编写的函数,因为错误仍然相同。
function notWorkingTernary(val: number | number[]) : typeof val extends number[] ? string[] : string{
if(Array.isArray(val)){
return val.map(v=>String(v));
}
else{
return String(val);
}
}
此函数在第一次返回时出现以下错误(第 3 行):
Type 'string[]' is not assignable to type 'string'.ts(2322)
我不明白为什么 Typescript 要我返回一个字符串类型,即使这里 val 的类型显然是一个数字数组。
如果我避免给出返回类型,那么返回类型总是字符串 | string[] 并且每次使用该函数时我都必须自己转换返回类型。
我在这里做错了什么?
【问题讨论】:
-
仅供参考,您所说的“三元类型”被称为“conditional types”。如果您改用该术语,您将有更好的时间搜索答案/文档/问题。
标签: typescript type-inference ternary