TypeScript自动补全出现car.car,需改为car.id形式,求排查方案
问题原因及解决方案
你的核心问题是解构时的类型标注错误,导致TypeScript把car识别成了包含car属性的对象,而非直接的ICarDetails类型。
错误分析
你写的类型{ car: ICarDetails; allStations: { id: string; location: string; }[] }[]表示:这是一个对象数组,数组里的每个元素都是带有car和allStations属性的对象。但你用的是数组解构[car, allStations],相当于取数组的第一个元素作为car,这个元素的类型是那个带car属性的对象,所以才会出现car.car.id的补全提示。
修正代码
你需要把类型改成元组类型(固定长度、固定位置类型的数组),这样解构出来的car就是直接的ICarDetails类型:
{([car, allStations]: [ICarDetails, { id: string; location: string; }[]]) => ( // 现在可以直接访问 car.id 了 )}
关键说明
元组类型用[类型1, 类型2]定义,明确指定数组第一个元素是ICarDetails,第二个是站点数组,TypeScript就能正确推断car的类型,自动补全它的原生属性。
内容的提问来源于stack exchange,提问作者reacter777
相关产品推荐
相关产品推荐

