typescript 检查对象属性是否可选

dbf7pr2w  于 2023-03-13  发布在  TypeScript
关注(0)|答案(1)|浏览(94)

例如,我有下面的类:

export class User {
  public name: string | null;
  public birthDate: Date;
}

例如,在一个组件中,我如何检查name是否是可选属性?我可以得到它的类型(string),但是无论它是否可以为空,我都不能得到任何信息。

kxxlusnw

kxxlusnw1#

你可以这样做:

type IsOptional<T, TypeIfTrue, TypeIfFalse> = undefined extends T
  ? TypeIfTrue
  : TypeIfFalse;

type IsNullable<T, TypeIfTrue, TypeIfFalse> = null extends T
  ? TypeIfTrue
  : TypeIfFalse;

type IsUserNameOptional = IsOptional<User["name"], true, false>;
type IsUserNameNullable = IsNullable<User["name"], true, false>;

相关问题