How to use TypeScript brand enum to type-check date string

🌱 seed (?)

[!tldr] Don't follow me, i'm lost too I don't know how to do this yet. I created this note to record the details of what I'd like to learn.

Objective: To have a type that accepts date strings like 2021-04-14, which we can use to create a valid Date instance.

Examples:

// should pass
new Date("2021-04-14") // "Wed Apr 14 2021 07:00:00 GMT+0700"
 
// should fail
new Date("14/04/2021") // ❌ Invalid Date
new Date("auouououoo") // ❌ Invalid Date

Optionally, I want the ability to fine-tune the type, eg. to only accept YYYY-MM-DD or the ISO 8601 format.

TODO — prompts:

  • how do we "connect" the type declaration to the function that checks/validates eg. the date string?
  • what is Nominal typing exactly?
  • what are Type guards exactly?

Link dump:


In: TypeScript MOC

Links to this note

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.

  • Est ex deserunt esse ut pariatur quis fugiat id velit commodo

    Ut anim fugiat laboris et eiusmod aliquip.