Tengo problemas para averiguar qué está mal aquí:
export type PackageLanguage = "de" | "en"; export interface ICookieConsentProps { language?: PackageLanguage ; } function CookieConsent({ language }: ICookieConsentProps) { useEffect(() => { LanguageHelper.setLanguageFile(language || "en"); <--- PROBLEM HERE ! }, [language]); return <div className="cc__gimme-cookies"></div>; } CookieConsent.defaultProps = { language: "en", } as Partial<ICookieConsentProps>;Me gustaría usar la propiedad de idioma en alguna función. ¿Por qué TypeScript ignora los accesorios predeterminados que configuré para el accesorio de idioma y quiere que verifique si no están definidos?
LanguageHelper.setLanguageFile(language); Argumento de tipo 'PackageLanguage | undefined' no se puede asignar a un parámetro de tipo 'PackageLanguage'. El tipo 'indefinido' no se puede asignar al tipo 'PackageLanguage'.ts(2345)
LanguageHelper.setLanguageFile(language || "en"); Esto funciona bien pero es un poco redundante, ya que definí defaultProps.
¡Gracias por cualquier consejo de antemano!
Saludos cordiales, Andreas | asdf1414
Debido a que language se escribe como opcional, es posible que no esté definido.
Puede considerar combinar las funciones de utilidad Pick y Required para obtener el resultado que necesita.
export type PackageLanguage = "de" | "en"; export interface ICookieConsentProps { language?: PackageLanguage; otherProp: string; propNotInterestedIn: string; } type Props = Pick<ICookieConsentProps, 'language' | 'otherProp'> function CookieConsent({ language }: Required<Props>) { useEffect(() => { LanguageHelper.setLanguageFile(language || "en"); <--- PROBLEM HERE ! }, [language]); return <div className="cc__gimme-cookies"></div>; } CookieConsent.defaultProps = { language: "en", otherProp: "another prop" } as Required<Props>;