Skip to content

Instantly share code, notes, and snippets.

@TimonVS
Created May 19, 2022 13:13
Show Gist options
  • Save TimonVS/e3d49b7274783e6b0bbc0ac06408ffee to your computer and use it in GitHub Desktop.
Save TimonVS/e3d49b7274783e6b0bbc0ac06408ffee to your computer and use it in GitHub Desktop.
class Task {
status: "todo" | "done" = "todo";
completionDate?: Date;
isDone(): this is Task & { status: "done"; completionDate: Date } {
return this.status === "todo";
}
}
const task = new Task();
let date: Date;
// @ts-expect-error -- doesn't work, `task.completionDate` can be `Date` or `undefined`
date = task.completionDate;
if (task.isDone()) {
// this works!
date = task.completionDate;
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment