Convert string[] literal to string type literal

409 views Asked by At

I have an array of strings:

let foo = ["bar", "baz"];

I wish to perform something similar to keyof type foo, but for an array rather than an object:

type DESIRED_RESULT = "bar"|"baz";

Is there any way to convert all unique strings within an array to a type?

1

There are 1 answers

0
SLaks On BEST ANSWER

foo is inferred as string[].
The array values don't enter the type system at all, so this is impossible.

If you put it in the type system, it becomes possible:

let foo: ["bar", "baz"];
let bar: typeof foo[number] = "";

Type '""' is not assignable to type '"bar" | "baz"'.