Estoy tratando de crear una propiedad de clase que se pueda usar para definir otro tipo:
class TypeOne { public static readonly key: string = 'key'; } class TypeTwo { public [TypeOne.key]: TypeOne }Pero muestra este error:
Un nombre de propiedad calculado en una declaración de propiedad de clase debe tener un tipo literal simple o un 'símbolo único'
Funciona bien con el valor constante de una enumeración:
enum TypeThree { key = 'key' } class TypeFour { public [TypeThree.key]: TypeThree }¿Hay alguna forma de establecer un valor constante en una clase para que el compilador pueda aceptarlo como una clave inmutable y comprender el nombre del campo?
Deshazte de la anotación de string :
class TypeOne { public static readonly key = 'key'; } class TypeTwo { public [TypeOne.key]: TypeOne }TS necesita un tipo literal para el nombre de la propiedad, la cadena es demasiado amplia.
Simplemente puede definir TypeOne como:
class TypeOne { public static readonly key = 'key'; // Remove the string annotation } Esto hace que el valor de la key sea constante, que es la cadena literal 'key' , dado que este es un valor único, el compilador no se quejará.