【发布时间】:2020-08-05 19:21:38
【问题描述】:
如果另一个属性具有特定值,我如何向接口添加其他属性?例如:
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
如果名称为 SpecialColumn,我希望 IBaseColumn 具有其他属性。上面的示例有效,但由于columns 的类型为IColumn[],所以我使用.find 查找的列也是如此。我发现的唯一解决方法是将列转换为ISpecialColumn,但理想情况下,类型会自动正确推断。
【问题讨论】:
标签: typescript