我需要声明一个对象数组,但与StackOverflow上的其他答案不同,我的对象在运行时是动态的。
举个例子。
可能[{"id": "1", "random1": "1", "random1": "1", "random1": "1"}]
可能[{"id": "2", "p": "p2", "p2": "o2"}]
我有数据。{}[],但我该把any放在哪里?
const [data, setData] = useState({ data: {}[], isFetching: false });
或者我可以用这样的方式来定义,我可以说永远有一个id:字符串索引,但是其他的可以是any。
像这样的东西,是无效的,但也许这样的东西是有效的?
const [data, setData] = useState({ data: { [index: string]: any }[];, isFetching: false });
你可以声明一个辅助类型,以便指定你的动态结构并保持你的代码干净。
type Data = {
data: { [index: string]: any }[];
isFetching: boolean;
}
// ...
useState<Data>({ data: [], isFetching: false });
// or
useState({ data: [], isFetching: false } as Data);
鉴于这是React,没有什么能阻止你有两个状态(但我想你不喜欢这样,因为你的实际代码),比如:
const [isFetching, setIsFetching] = useState(false);
const [data, setData] = useState([] as ({ [index: string]: any }[]));