TypeScript - Utilities
Record
type RegisterFormInput = {
name: string
email: string
password: string
address: string
phoneNumber: string
username: string
}
can be written like this:
enum RegisterFormField {
name,
email,
password,
address,
phoneNumber,
username,
}
type RegisterFormInput = Record<keyof typeof RegisterFormField, string>
or :
enum RegisterFormField {
name,
email,
password,
address,
phoneNumber,
username,
}
type RegisterFormFieldType = keyof typeof RegisterFormField
type RegisterFormInput = {
[key in RegisterFormFieldType]: string
}
/** or */
type RegisterFormInput = Record<RegisterFormFieldType, string>
other examples:
type CardSpecs = {
name: string
ID: number
isPassive: boolean
}
type CardRarity = 'common' | 'rare' | 'epic'
/**
can be written like this:
enum CardRarityName {
common,
rare,
epic
}
type CardRarity = keyof typeof CardRarityName;
*/
type CardCollection = Record<CardRarity, CardSpecs>
/**
result:
type CardCollection = {
common: {
name: string;
ID: number;
isPassive: boolean;
};
rare: {
name: string;
ID: number;
isPassive: boolean;
};
epic: {
name: string;
ID: number;
isPassive: boolean
}
}
*/
references:
Partial
type RegisterFormInput = {
name: string
email: string
password: string
address: string
phoneNumber: string
username: string
}
type OptionalRegisterFormInput = {
name?: string
email?: string
password?: string
address?: string
phoneNumber?: string
username?: string
}
can be written like this:
type RegisterFormInput = {
name: string
email: string
password: string
address: string
phoneNumber: string
username: string
}
type OptionalRegisterFormInput = Partial<RegisterFormInput>
reference: TypeScript Docs
other references: