55
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

TypeScript 3.4 で Array (string[]) を Union Type に変換する Tips

Last updated at Posted at 2019-04-09

参考: https://stackoverflow.com/questions/45251664/typescript-derive-union-type-from-tuple-array-values

TypeScript 3.4 で組み込まれた as const を使ってより簡潔に実装できるようになった

const directionList = ['east', 'west', 'south', 'north'] as const
// -> Readonly ['east', 'west', 'south', 'north']

type Direction = typeof directionList[number]
// -> 'east' | 'west' | 'south' | 'north'

独自定義の Type Guard と組み合わせたりするのに便利そう

const isDirection = (obj: any): obj is Direction => {
  return directionList.includes(obj)
}

const doSomething = (data: any) => {
  // validation
  if (!isDirection(data.direction)) {
    throw new Error('direction is not found')
  }

  // do something
}
55
21
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
55
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?