TypeScript中如何为用作函数参数的String迭代器添加类型标注
解决TypeScript中解构参数的隐式any警告问题
针对你提供的首字母大写函数,要解决Binding element 'rest' implicitly has an 'any' type的警告,你可以通过两种方式为解构参数添加类型标注:
方式一:标注解构元组类型
直接为解构的参数指定元组类型,明确第一个元素和剩余元素的类型都是string:
function capitalizeFirstLetter([ first = '', ...rest ]: [string, ...string[]]) { return [ first.toUpperCase(), ...rest ].join(''); }
这里的[string, ...string[]]是剩余元组类型,既匹配解构的结构,又兼容字符串(因为字符串实现了可迭代接口,能被解构为单个字符组成的序列)。
方式二:标注可迭代类型
由于字符串属于Iterable<string>类型(迭代器返回单个字符的字符串),也可以直接给参数标注该类型:
function capitalizeFirstLetter([ first = '', ...rest ]: Iterable<string>) { return [ first.toUpperCase(), ...rest ].join(''); }
TypeScript会自动推断出first和rest的类型为string和string[],消除隐式any警告。
两种方式都能正常工作,第一种更精确地匹配解构的结构,第二种则更贴合字符串的可迭代特性,你可以根据需求选择。
内容的提问来源于stack exchange,提问作者jeromecc
相关产品推荐
相关产品推荐

