Tengo una variable y quiero establecer la variable como anotaciones de tipo mecanografiado.
type mytype = "image1" | "image2" | "image3" images: mytype;Eso no es problema, pero quiero generar el mytype desde un Array. ¿Cómo es eso posible?
images = ["image1", "image2", "image3"] mytype = images.map(i => '"' + i + '"').join(' | ')¿Piensas así?
const images = ["image1", "image2", "image3"] as const; type mytype = typeof images[number]; // mytype is now "image1" | "image2" | "image3"Usaría una enumeración para este caso, desafortunadamente no creo que pueda crear el tipo sobre la marcha en función de los valores dinámicos (o si debería, anula el propósito de ts).
https://www.typescriptlang.org/docs/handbook/enums.html
enum Images { ImageType1 = 'image1', ImageType2 = 'image2', ... }; const values = Object.values(Images); // will be an array ['image1', 'image2', ...]; // use as a type const foo = (image: Images) => { // do stuff, "image" will be restricted to 'image1' | 'image2' | ... values }Hay dos opciones para decirle a Typescript que desea asignar una matriz a una variable:
1. Usando el operador []
La forma más fácil y mejor es usar [] después de su tipo
type mytype = "image1" | "image2" | "image3" images: mytype[];2. Casting de un tipo a un Array
type mytype = "image1" | "image2" | "image3" images: Array<mytype>;