Rick
Rick

Reputation: 8846

Convert string[] literal to string type literal

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?

Upvotes: 2

Views: 425

Answers (1)

SLaks
SLaks

Reputation: 888167

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"'.

Upvotes: 1

Related Questions