typeof one of array code example

Example 1: typescript one of array

function stringLiterals<T extends string>(...args: T[]): T[] { return args; }
type ElementType<T extends ReadonlyArray<unknown>> = T extends ReadonlyArray<infer ElementType> ? ElementType : never;

const values = stringLiterals('A', 'B');
type Foo = ElementType<typeof values>;

const v1: Foo = 'A' // This should work
const v2: Foo = 'D' // This should give me an error since 'D' doesn't exist in values

Example 2: create type as values of list typescript

// You can create your list as enums
enum statuses {
  SETUP,
  STARTED,
  FINISHED
}

// Creates known string type
// 'SETUP' | 'STARTED' | 'FINISHED'
type StatusString = keyof typeof statuses

// JobStatus.status must match 'SETUP' | 'STARTED' | 'FINISHED'
export type JobStatus = {
  status: StatusString
}