Tengo algunos problemas con TypeScript. Estoy tratando de transformar algún valor que proviene del componente principal al secundario. Parent está enviando un valor que puede ser EN, FR o NL, y esos valores que debo transformar en números, así que hice eso:
const transform_translation = { 'EN': 1, 'FR': 2, 'NL': 3 }; Pero cuando trato de obtener valor como transform_translation[props.language] , dice;
S7053: El elemento tiene implícitamente un tipo 'cualquiera' porque la expresión de tipo 'cualquiera' no se puede usar para indexar el tipo '{ EN: número; FR: número; Países Bajos:
Accesorios:
props: { language: { type: String, default: ['EN', 'NL', 'FR'], required: true }, . . . }¿Cómo debo definirlos entonces? Trabajo por primera vez con TS por cierto.
número; }'.
Debe decirle a ts que lo que está pasando no es solo una cadena, sino que se limita a las claves disponibles de los idiomas que tiene:
const transform_translation = { EN: 1, FR: 2, NL: 3 }; // create type out of valid keys of object type Language = keyof typeof transform_translation; const getLanguageNum = (lang: Language) => transform_translation[lang]; console.log(getLanguageNum("EN")); // 1Crearía una enumeración o escribiría para la clave de esa manera. Luego, al acceder a él, puede convertir la clave en el tipo de la siguiente manera
type ITransformTranslationKey = 'EN' | 'FR' | 'NL'; const transform_translation: Record<ITransformTranslationKey, number> = { 'EN': 1, 'FR': 2, 'NL': 3 }; const someVar: ITransformTranslationKey = 'E' + 'N'; // you can define the type here transform_translation[someVar as ITransformTranslationKey] // or here