Typescript
在 Typescript 方面,我们确实花了很大的精力优化,为的就是提供更好的使用体验,我们尽力地使用自动推断类型来减少你定义类型的麻烦。
自动推断 alova useHooks 状态类型
在 createAlova 创建 alova 实例时会根据传入的statesHook
自动推断出useRequest
、useWatcher
、useFetcher
等所有 useHooks 所创建的状态类型。
以下为预设中,useHooks 返回的状态类型。
- VueHook
- ReactHook
- SvelteHook
- SolidHook
import VueHook from 'alova/vue';
const vueAlova = createAlova({
statesHook: VueHook
// ...
});
const {
loading, // Ref<boolean>
data, // Ref<{ data: any }>
error // Ref<Error>
} = useRequest(vueAlova.Get<{ data: any }>('/todo/list'));
import ReactHook from 'alova/react';
const reactAlova = createAlova({
statesHook: ReactHook
// ...
});
const {
loading, // boolean
data, // { data: any }
error // Error
} = useRequest(reactAlova.Get<{ data: any }>('/todo/list'));
import SvelteHook from 'alova/svelte';
const svelteAlova = createAlova({
statesHook: SvelteHook
// ...
});
const {
loading, // Writable<boolean>
data, // Writable<{ data: any }>
error // Writable<Error>
} = useRequest(svelteAlova.Get<{ data: any }>('/todo/list'));
import SolidHook from 'alova/solid';
const solidAlova = createAlova({
statesHook: SolidHook
// ...
});
const {
loading, // Accessor<boolean>
data, // Accessor<{ data: any }>
error // Accessor<Error>
} = useRequest(svelteAlova.Get<{ data: any }>('/todo/list'));
data 的类型将会根据不同的 Method 实例中指定的响应数据类型而不同,我们继续往下看。