如何定义首元素为字符串其余为数字的TypeScript自定义数组类型?
你遇到的类型错误是因为原来的segment类型定义没有约束数组不同位置的元素类型,把原本首元素必须为字符串、其余元素必须为数字的结构,定义成了所有位置都可以是字符串或数字的混合数组。
正确的segment类型定义
使用JSDoc支持的带剩余元素的元组类型即可满足需求:
/** * @typedef {[string, ...number[]]} segment */
类型说明
- 方括号内第一个位置写
string,约束数组首个元素必须为字符串类型,匹配路径命令的类型要求 - 后续的
...number[]是剩余元素语法,约束数组从第二个元素开始的所有元素都必须为数字类型,匹配路径参数的类型要求
修改后两个报错都会自动消失:
- 解构得到的
pathCommand会被正确推断为string类型,调用字符串方法不会再报错 seg.slice(1)返回的结果会被正确推断为number[]类型,传入checkPathValues时类型完全匹配
内容的提问来源于stack exchange,提问作者thednp
相关产品推荐
相关产品推荐

