gpt4 book ai didi

typescript - 如果属性具有特定值,则将条件属性添加到 typescript 界面

转载 作者:行者123 更新时间:2023-12-04 09:15:04 24 4
gpt4 key购买 nike

如果另一个属性具有特定值,我如何向接口(interface)添加其他属性?例如:

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,则拥有其他属性.上面的例子有效,但是因为 columnsIColumn[] 类型,我用 .find 查找的列也是如此.我发现的唯一解决方法是将列强制转换为 ISpecialColumn ,但理想情况下,类型会自动正确推断。

最佳答案

你需要一个类型保护:

const isSpecialClumn = (column: IColumn): column is ISpecialColumn =>
column.name === 'SpecialColumn'

const column = columns.find(isSpecialClumn) // ISpecialColumn | undefined

关于typescript - 如果属性具有特定值,则将条件属性添加到 typescript 界面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63263259/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com