假设您有一个返回以下内容的函数:
const useHook0 = (props) => {
...
API call
...
return [varA, varB, varC] as [boolean, boolean, any]
}
然后您希望在另一个函数中使用它,例如:
const [itemA, itemB, itemC]: [boolean, boolean, number] = useHook0(configA);
const [itemA1, itemB1, itemC1]: [boolean, boolean, string] = useHook0(configB);
有没有一种方法可以将类型应用于原始数组(例如以接口的形式),这样您只需指出第三个常量将是哪种类型?
换句话说,我觉得编写: [boolean, boolean, number]
或: [boolean, boolean, string]
是多余和不必要的,但是我找不到更简洁的方法。
编辑:
以这种方式构造它的原因是function0是一个进行API调用的钩子。因此数据可以采用许多不同的形式。
之所以没有以对象的形式提供它,是因为如果我在一个函数中进行了多个API调用,则需要能够重命名常量。
编辑2:
每次避免断言的目的是使它itemA.map(result => ...)
被调用5次时,我不需要每次都写itemA.map((result: string) => ...)
。只是尝试遵循DRY。
答案 0 :(得分:2)
如果您知道应该返回的不同配置,可以使用Generics来解决此问题:
const useHook0 = <T>(props): [boolean, boolean, T] => {...}
const [itemA1, itemB1, itemC1] = useHook0<number>(configA)
const [itemA1, itemB1, itemC1] = useHook0<string>(configB)