问答

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

作者:admin 2021-05-05 我要评论

比如后台返回一个list,是object[],里面有id,name,age什么的,我在操作时只需要id和name,那我怎么定义这个list的每一项,item:{id:number,name:string,[key:...

在说正事之前,我要推荐一个福利:你还在原价购买阿里云、腾讯云、华为云服务器吗?那太亏啦!来这里,新购、升级、续费都打折,能够为您省60%的钱呢!2核4G企业级云服务器低至69元/年,点击进去看看吧>>>)

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

###
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
}]

版权声明:本文转载自网络,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。本站转载出于传播更多优秀技术知识之目的,如有侵权请联系QQ/微信:153890879删除

相关文章
  • ts如何对一个有很多字段的object定义只

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

  • layui图片上传错误,提示接口请求异常

    layui图片上传错误,提示接口请求异常

  • 按需引入 antd 一用组件就报错 Possibl

    按需引入 antd 一用组件就报错 Possibl

  • 刚学C语言,程序生成时可以,但链接时

    刚学C语言,程序生成时可以,但链接时

腾讯云代理商
海外云服务器