瀏覽代碼

feat(useTexture): make composable awaitable and improve type definitions

- Update `useTexture` to return a Promise-like object
- Enhance type definitions to support async/await usage
- Maintain existing reactive state and loading mechanism
- Improve type safety and composable flexibility
alvarosabu 6 月之前
父節點
當前提交
90fb9f5385
共有 1 個文件被更改,包括 5 次插入4 次删除
  1. 5 4
      src/composables/useTexture/index.ts

+ 5 - 4
src/composables/useTexture/index.ts

@@ -54,12 +54,12 @@ export interface UseTextureReturn<T> {
  * @param path - Path or paths to texture(s)
  * @param manager - Optional THREE.js LoadingManager
  */
-export function useTexture(path: string, manager?: LoadingManager): UseTextureReturn<Texture>
-export function useTexture(paths: string[], manager?: LoadingManager): UseTextureReturn<Texture[]>
+export function useTexture(path: string, manager?: LoadingManager): UseTextureReturn<Texture> & Promise<UseTextureReturn<Texture>>
+export function useTexture(paths: string[], manager?: LoadingManager): UseTextureReturn<Texture[]> & Promise<UseTextureReturn<Texture[]>>
 export function useTexture(
   paths: string | string[],
   manager?: LoadingManager,
-): UseTextureReturn<Texture | Texture[]> {
+): UseTextureReturn<Texture | Texture[]> & Promise<UseTextureReturn<Texture | Texture[]>> {
   const data = shallowRef<Texture | Texture[] | null>(null)
   const isLoading = ref(true)
   const error = ref<Error | null>(null)
@@ -113,12 +113,13 @@ export function useTexture(
     }
   }) as UseTextureReturn<Texture | Texture[]>['load']
 
+  // Make the return value awaitable
   const returnValue = {
     data,
     isLoading,
     error,
     load,
-  } as UseTextureReturn<Texture | Texture[]>
+  } as UseTextureReturn<Texture | Texture[]> & Promise<UseTextureReturn<Texture | Texture[]>>
 
   // Initial load
   if (typeof paths === 'string') {