ts如何对一个有很多字段的object定义只需要的类型

比如后台返回一个list,是object[],里面有id,name,age什么的,我在操作时只需要id和name,那我怎么定义这个list的每一项,item:{id:number,name:string,[key: string]:any}这样吗,有没有什么写法可以不用[key: string]:any,

阅读 4.6k
3 个回答
interface Item extends Record<string, unknown> {
    id: number;
    name: string;
}

interface List extends Array<Item> {}

P.S. 如果你的业务里压根不需要其他的属性,其实你也可以压根不声明它们……

定义这样就行

只定义你用到的就可以 当然 你也可以把 [key?: string]: any加进去

interface Obj {
  id: number;
  string: number;
  age: number;
}

// list 就可以这样定义
list: Array<Obj> = 
// 或者
list: obj[] = ;

没懂你的意思?

你想要灵活定义数组?

interface BaseItem {
    id: string
    age: number
    name: string
}

type List<T = any> = Array<BaseItem & T>

const list: List = []

const listOld: List = [{
    id: '025sf',
    age: 18,
    name: '小明'
}]

const listMore: List<{ old: boolean }> = [{
    id: '025sf',
    age: 18,
    name: '小明',
    old: true
}]
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题