Skip to content

Instantly share code, notes, and snippets.

@YouMinTW
Created August 17, 2021 19:19
Show Gist options
  • Save YouMinTW/f4616b4b81f441f31b41ed3144e28233 to your computer and use it in GitHub Desktop.
Save YouMinTW/f4616b4b81f441f31b41ed3144e28233 to your computer and use it in GitHub Desktop.
type UserEmail = NonNullable<UserEmailInput>;
// 等於 (將 Type Alias 型別化名拆開)
type UserEmail = NonNullable<string | null | undefined>;
// 等於 (將 union 聯集 各自拆開)
type UserEmail =
| NonNullable<string>
| NonNullable<null>
| NonNullable<undefined>;
// 等於 (將 NonNullable 回寫成原本的定義)
type UserEmail =
| (string extends null | undefined ? never : string)
| (null extends null | undefined ? never : null)
| (undefined extends null | undefined ? never : undefined);
// 等於
type UserEmail = string | never | never ;
// 等於 (never 是所有 type 的 subtype,所以聯集時可以省略)
type UserEmail = string;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment