Как я могу добавить дополнительные свойства к интерфейсу, если другое свойство имеет определенное значение? Например:
interface IBaseColumn {
name: string
display?: boolean
}
interface ISpecialColumn extends IBaseColumn {
name: 'SpecialColumn'
extraProp?: any
}
export type IColumn = IBaseColumn | ISpecialColumn
// ...
const columns: IColumn[] = [/* ... */]
const column = columns.find(c => c.name === 'SpecialColumn') // IColumn | undefined
Я хочу, чтобы IBaseColumn
имел дополнительные свойства, если имя SpecialColumn
. Приведенный выше пример работает, но поскольку columns
имеет тип IColumn[]
, я ищу столбец с .find
. Единственный обходной путь, который я нашел, - это привести столбец к ISpecialColumn
, но в идеале тип будет правильно вводиться автоматически.