Прежде всего, мне кажется, что я что-то упускаю из Typescript и Enums, хотя я все учился.
Итак, поехали:
У меня есть, скажем, следующее перечисление:
export enum LapTypes {
'Start' = 'Start',
'Stop' = 'Start',
'Manual' = 'Manual',
'manual' = 'Manual',
'Autolap' = 'Auto lap',
'AutoLap' = 'Auto lap',
'autolap' = 'Auto lap',
'Distance' = 'Distance',
'distance' = 'Distance',
'Location' = 'Location',
'location' = 'Location',
'Time' = 'Time',
'time' = 'Time',
'HeartRate' = 'Heart Rate',
'position_start' = 'Position start',
'position_lap' = 'Position lap',
'position_waypoint' = 'Position waypoint',
'position_marked' = 'Position marked',
'session_end' = 'Session end',
'fitness_equipment' = 'Fitness equipment',
}
И в моем классе я использую его как:
export class Lap {
public type: LapTypes;
constructor(type: LapTypes) {
this.type = type;
}
}
Когда я создаю новый круг следующим образом:
const lap = new Lap(LapTypes.AutoLap);
Все хорошо.
Опять же, если я сделаю это:
const lapType = 'AutoLap';
это new Lap(LapTypes[lapType])
отлично работает
Однако, так как я хочу динамический Laptype, я пытаюсь сделать следующее:
const lapType: string = someJSON['Type'];
но когда я пытаюсь создать новый круг
new Lap(LapTypes[lapType])
Я получаю:
элемент неявно имеет тип 'any', поскольку индексное выражение не имеет типа 'number'
Я уверен, что здесь что-то не хватает, и мне нужно пересмотреть мою печатную форму.
Мне нужна помощь в том, что я делаю неправильно, и где искать, чтобы расширить свои знания.