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

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

interface PropsObj {
    title: string;
    data: any[];
    type: string;
    QC: string;
    activeKey: string[];
    changeCollapse: any;
}
const Description: React.FC<PropsObj> = (props) => {}
阅读 15.3k
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;
}
推荐问题