ts中,函数的参数是数组或者函数的时候怎么定义类型?

比如,data是个数组,但它的元素是对象{}, 这是怎么定义类型?
changeCollapse是个方法,或者说是函数,怎么定义类型?

interface PropsObj {
    title: string;
    data: any[];
    type: string;
    QC: string;
    activeKey: string[];
    changeCollapse: any;
}
const Description: React.FC<PropsObj> = (props) => {}
阅读 15.2k
3 个回答

我一般这样来写,把函数参数和返回值对象替换成对应的就行

interface Props {
  data: { [key: string]: number | string }[]
  changeCollapse: (args: string[]) => void
}

最好不要

interface Props {
  data: object[]
}

这样写到时候类型校验够你喝一壶。

data: {}[];
changeCollapse: Function;

好像这样就行

按理说你data数组的对象也应该是一个具体的类型,这样才能起到TS严格类型的作用。

函数的话看你要求有多高,如果只要是函数就行,那么Function就行,如果需要比较限制一点就需要给参数或者返回类型之类的。

interface IObject = {
    name: string;
    age?: number;
    [propName:string]:any // 如果确实对象里有任意值无法预知
}

interface PropsObj {
    title: string;
    data: IObject[];
    type: string;
    QC: string;
    activeKey: string[];
    changeCollapse: Function | (name: string) => string;
}
撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题