Actualmente tengo esto en mi base de código:

type Filter             =  "all"| "active"| "broken"| "disabled";
const filters: Filter[] = ["all", "active", "broken", "disabled"];

¿Puedo producir uno automáticamente de otro?

1
Lawrence Wagerfield 21 jun. 2017 a las 12:02

2 respuestas

La mejor respuesta

En resumen: no. No en tiempo de ejecución al menos. Y no como parte del lenguaje TypeScript.

Existe un TypeScript type solo para fines de compilación / escritura. En realidad no se compila para nada.

Potencialmente, podría hacer algo automatizado utilizando un enum, ya que una enumeración realmente se compila en un objeto JavaScript del que puede elegir las propiedades. No se basaría en cadenas como su tipo es ... no estoy seguro si eso es muy importante.

function setupEnum(enumType: any): any[] {
    let result = [];

    for (let i in enumType)
        if (isNaN(+i))
            result.push(enumType[i]);

    return result;
}

enum Filter {
    all, active, broken, disabled
}

var filters: Filter[] = setupEnum(Filter);
1
Mitch 22 jun. 2017 a las 02:03

@Mitch tiene razón, esto no es posible actualmente.

Actualmente tengo esto en mi lista de desafíos (enlace -> UnionToArray ) en TS ahora. Creo que dada la implementación de tipos variados (# 5453 allí) puede haber una manera de abordar esto.

0
Kiara Grouwstra 26 jun. 2017 a las 14:35