Объекты
I способ (inline)
const settings: {
color: string;
delay: number;
retry: boolean;
} = {
color: '#F00',
delay: 2000,
retry: false
};
II способ (type)
type TSettings = {
color: string;
delay: number;
retry: boolean;
}
const settings: TSettings = {
color: '#F00',
delay: 2000,
retry: false
};
III способ (interface)
interface ISettings {
color: string;
delay: number;
retry: boolean;
}
const settings: ISettings = {
color: '#F00',
delay: 2000,
retry: false,
};
Record
Для объектов с заранее неизвестным набором полей
export type TRecord = Record<string, number>;
// или такая запись (через key)
export type TRecord = Record<[key: string], number>;
const a: TRecord = {
a: 1,
b: 2,
c: 3,
}
Вложенные объекты
interface IField {
name: string;
actual: boolean;
// вложенный объект
hubs?: {
[key: number]: boolean
};
}
Поля объекта как enum
export enum DrugstoreType {
PARTNER = 1,
OWN = 2,
EXTERNAL = 3,
}
export enum ColorList {
// font
FONT_PRIMARY = '#333f48',
FONT_SECONDARY = '#9199a3',
...
}
export const drugstoreType: Record<DrugstoreType, string> = {
[DrugstoreType.PARTNER]: 'Партнерская',
[DrugstoreType.OWN]: 'Собственная',
[DrugstoreType.EXTERNAL]: 'Неподключенная',
};
Поля и значения объекта как enum
export const drugstoreTypeColor: Record<DrugstoreType, ColorList> = {
[DrugstoreType.PARTNER]: ColorList.GREEN,
[DrugstoreType.OWN]: ColorList.BLUE,
[DrugstoreType.EXTERNAL]: ColorList.GRAY,
};