Kaynağa Gözat

fix TS errors

Olivier Massot 4 ay önce
ebeveyn
işleme
c8149b9740

+ 3 - 4
services/data/enumManager.ts

@@ -2,7 +2,7 @@ import type { VueI18n } from 'vue-i18n'
 import type ApiRequestService from './apiRequestService'
 import type ApiRequestService from './apiRequestService'
 import UrlUtils from '~/services/utils/urlUtils'
 import UrlUtils from '~/services/utils/urlUtils'
 import HydraNormalizer from '~/services/data/normalizer/hydraNormalizer'
 import HydraNormalizer from '~/services/data/normalizer/hydraNormalizer'
-import type { Collection, Enum } from '~/types/data.d'
+import type { AnyJson, Enum, EnumApiResponse } from '~/types/data.d'
 
 
 class EnumManager {
 class EnumManager {
   private apiRequestService: ApiRequestService
   private apiRequestService: ApiRequestService
@@ -18,9 +18,8 @@ class EnumManager {
 
 
     const response = await this.apiRequestService.get(url)
     const response = await this.apiRequestService.get(url)
 
 
-    // @ts-expect-error J'ignore pourquoi, mais response ici est bien de type AnyJson, et non Response...
-    const { data } = HydraNormalizer.denormalize(response) as {
-      data: Collection<Record<string>>
+    const { data } = HydraNormalizer.denormalize((response as unknown) as AnyJson) as {
+      data: EnumApiResponse
     }
     }
 
 
     const enum_: Enum = []
     const enum_: Enum = []

+ 5 - 5
services/data/normalizer/hydraNormalizer.ts

@@ -1,5 +1,5 @@
 import * as _ from 'lodash-es'
 import * as _ from 'lodash-es'
-import type { AnyJson, ApiResponse, HydraMetadata } from '~/types/data'
+import type { AnyJson, ApiResponse, HydraMetadata, EnumApiResponse } from '~/types/data'
 import UrlUtils from '~/services/utils/urlUtils'
 import UrlUtils from '~/services/utils/urlUtils'
 import { METADATA_TYPE } from '~/types/enum/data'
 import { METADATA_TYPE } from '~/types/enum/data'
 import models from '~/models/models'
 import models from '~/models/models'
@@ -63,7 +63,7 @@ class HydraNormalizer {
   protected static getData(
   protected static getData(
     hydraData: AnyJson,
     hydraData: AnyJson,
     model?: typeof ApiResource,
     model?: typeof ApiResource,
-  ): AnyJson | ApiResource | (AnyJson | ApiResource)[] {
+  ): AnyJson | ApiResource | (AnyJson | ApiResource)[] | EnumApiResponse {
     if (hydraData['@type'] === 'Collection') {
     if (hydraData['@type'] === 'Collection') {
       const members = hydraData.member as Array<AnyJson>
       const members = hydraData.member as Array<AnyJson>
       return members.map((item: AnyJson) =>
       return members.map((item: AnyJson) =>
@@ -129,7 +129,7 @@ class HydraNormalizer {
   protected static denormalizeItem(
   protected static denormalizeItem(
     item: AnyJson,
     item: AnyJson,
     model?: typeof ApiResource,
     model?: typeof ApiResource,
-  ): ApiResource | AnyJson {
+  ): ApiResource | AnyJson | EnumApiResponse {
     if (model) {
     if (model) {
       return HydraNormalizer.denormalizeEntity(model, item)
       return HydraNormalizer.denormalizeEntity(model, item)
     }
     }
@@ -187,8 +187,8 @@ class HydraNormalizer {
     return instance
     return instance
   }
   }
 
 
-  protected static denormalizeEnum(item: AnyJson): AnyJson {
-    return item
+  protected static denormalizeEnum(item: AnyJson): EnumApiResponse {
+    return item as unknown as EnumApiResponse
   }
   }
 
 
   /**
   /**

+ 6 - 1
types/data.d.ts

@@ -28,7 +28,7 @@ interface HydraMetadata {
 }
 }
 
 
 interface ApiResponse {
 interface ApiResponse {
-  data: AnyJson | ApiResource | (AnyJson | ApiResource)[]
+  data: AnyJson | ApiResource | (AnyJson | ApiResource)[] | EnumApiResponse
   metadata: HydraMetadata
   metadata: HydraMetadata
 }
 }
 
 
@@ -62,6 +62,11 @@ interface EnumItem {
   label: string
   label: string
 }
 }
 
 
+interface EnumApiResponse extends AnyJson {
+  name: string
+  items: Record<string, string>
+}
+
 interface CollectionResponse {
 interface CollectionResponse {
   member: Array<AnyJson>
   member: Array<AnyJson>
   totalItems: number
   totalItems: number