首页 > 解决方案 > 使用 TypeScript 在数组项中接口唯一值

问题描述

我正在逐渐使用 TypeScript 学习 React。我经常面临描述对象的问题,以便 ESLint 可以提示我。我试图在数组中描述一个对象,以便它的字段name具有来自可能枚举的唯一值IKeyNameColumns 。为了让我更容易理解我的意思,我最好举个例子:

type IKeyNameColumns = 'name' | 'status' | 'type' | 'age'

interface IListColumns {
  columns: Array<{
    title: string
    name: IKeyNameColumns // need only one uniq value of IKeyNameColumns 
  }>
}

我知道它是在泛型的帮助下完成的,而与集合有关Set

标签: typescript

解决方案


因此,据我了解,您试图告诉IListColumns数组columns不允许有 2 个具有相同name属性的元素。

据我所知,泛型是不可能的,应该用 a 来解决Set,您在问题中也提到了这一点。

这导致了下一个问题,Set据我所知,不可能定义一个比较器,这将表明在相等name属性的情况下相等,而是始终检查整个对象。

此处也讨论了相同的内容:如何为 JavaScript Set 自定义对象相等性


推荐阅读