typescript - TypeScript - 使用“as”运算符转换后破坏数组导致编译错误:预期表达式
问题描述
我正在使用 TypeScript 2.9.2。
第 3 方库URI.js具有声明为的静态方法:
joinPaths(...paths: (string | URI)[]): URI;
现在我有一个名为urlPaths
声明为的变量urlPaths: string | string[]
,以下代码[ts] Expression expected.
在展开运算符处给了我错误:
URI.joinPaths(typeof urlPaths === 'string' ? urlPaths as string : ...(urlPaths as string[]))
但是,如果我将三元运算符表达式提取为单独的变量,那就没问题了:
const paths = typeof urlPaths === 'string' ? [urlPaths as string] : urlPaths as string[];
URI.joinPaths(...paths);
我的语法有什么问题?
解决方案
函数的参数支持扩展语法,因此您...
应该位于最外层:
URI.joinPaths(... (typeof urlPaths === 'string' ? [urlPaths as string] : (urlPaths as string[])));
但也要注意断言是多余的,打字稿会找出没有它们的类型,因为typeof urlPaths === 'string'
它是类型保护和urlPaths: string | string[]
URI.joinPaths(... (typeof urlPaths === 'string' ? [urlPaths] : urlPaths));
推荐阅读
- amazon-sagemaker - Sagemaker:DeepAR 超参数调整错误
- excel - 为什么定位形状不精确?
- sorting - 如何根据属性值对对象列表进行排序
- reactjs - 反应本机设置状态不起作用
- vue.js - Vue,单击收音机后禁用所有其他输入
- r - gganimate col 图表中的值与原始数据值不同
- azure - 在 AAD 应用注册中显示与托管服务标识服务主体关联的应用程序
- javascript - 在画布上选择和取消选择绘制的对象并移动到鼠标 X 和 Y
- javascript - 将 ID 从 foreach 传递给 modal
- c++ - 相扑客户端c ++中setCompleteRedYellowGreenDef后的异常