TS создает файл.d.ts, который является менее описательным
У меня есть этот вход в файл.ts:
export const OverSizedItems = <{ [key: string]: OverSizedItemType }>{
NONE: {
factor: 1,
count: 0,
mooversNeeded: 1,
},
ONE: {
factor: 1.01,
count: 1,
mooversNeeded: 4,
},
TWO: {
factor: 1.03,
count: 2,
mooversNeeded: 4,
},
THREE_PLUS: {
factor: 1.07,
count: 5,
mooversNeeded: 6,
}
};
это переносится на это:
export declare const OverSizedItems: {
[key: string]: OverSizedItemType;
};
но если изменить оригинал и не указывать информацию о типе подписи индекса, я получу следующее: это больше, чем я ищу:
export declare const OverSizedItems: {
NONE: {
factor: number;
count: number;
mooversNeeded: number;
};
ONE: {
factor: number;
count: number;
mooversNeeded: number;
};
TWO: {
factor: number;
count: number;
mooversNeeded: number;
};
THREE_PLUS: {
factor: number;
count: number;
mooversNeeded: number;
};
};
перечисление не будет работать здесь, потому что перечисление не может указывать на объекты.
Итак, что я могу сделать, чтобы добавить подпись индекса, но сохранить все значения?
1 ответ
Лучшее, что я мог придумать, это использовать Record
type со всеми ключами, записанными в объединении, вот так:
type OverSizedItemKey = "NONE" | "ONE" | "TWO" | "THREE_PLUS"
export const OversizedItems: Record<OverSizedItemKey, OverSizedItemType> = {
// ...
}
Record
использует сопоставленный тип, поэтому убедитесь, что вы знакомы с этим, чтобы знать, как и почему это работает.