Vyhledávání na webu

typescript - @types - pole hodnot na klíče objektu


Řekněme, že mám seznam řetězců

const arr = ["a", "b", "c"];

Jak přesně to převedu na objekt tak, aby tyto hodnoty byly klíčem pro jakýkoli objekt?

const obj = {
 a: "can be anything",
 b: 2,
 c: 0
}

Zkoušel jsem používat

type TupleToObject<T extends readonly string[]> = {
    [P in T[number]]: any;
};

ale nezdá se, že by to bylo silně typované.

Odpověď č. 1

Můžete využít zápis as const v TypeScriptu (viz dokumentace).

const arr = ["a", "b", "c"] as const;
// inferred type: readonly ["a", "b", "c"]


type TupleToObject<T extends readonly string[]> = {
    [P in T[number]]: any;
};

type MyObject = TupleToObject<typeof arr>
// type MyObject = {
//     a: any;
//     b: any;
//     c: any;
// }