首页 > 解决方案 > 打字稿自动完成假定泛型数组中的同质值

问题描述

当对数组参数使用泛型时,打字稿自动完成假定所有对象都是同质的。是否有这种行为的解释和/或使自动完成建议瓜的方法?

type Fruits = {apples: number, melons?: number}

const addToBasket = <T extends Fruits[]>(basket: T)=>{
  return basket
}

// melons are missing in autocomplete for the second object
addToBasket([{apples:1}, {apples:1 }])

// melons appear in autocomplete for second object
addToBasket([{apples:1, melons: 1}, {apples:1 }])

游乐场链接

在上面的第一次调用中addToBasketmelons不建议将其作为属性。它确实出现在自动完成中,但仅出现在可能相关的范围内标识符的一般列表中,并且有点隐藏:

显示自动完成的屏幕截图,其中包含各种不相关的标识符

请注意列表中的所有排序方式Fruitsbasket并且melons未将其标识为属性。相反,在第二次调用中addBasketmelons建议将其作为属性:

仅显示自动完成功能的屏幕截图

它在这个 TypeScript 问题中有报道,可能与这个有关。

标签: typescripttypescript-generics

解决方案


推荐阅读