Представьте, что у меня есть класс Foo со строковым идентификатором.
class Foo {
id = '123' as FooId;
}
Я пытаюсь обеспечить его статическую типизацию, используя перечисление бренда .
enum FooIdBranding {}
type FooId = string & FooIdBranding;
Итак, моя цель - конкретный объект, ключ которого - FooId
, а значение - Foo
.
type fooCache = { [key: FooId]: Foo };
К сожалению, это не работает:
TS1023: тип параметра подписи индекса должен быть 'string' или 'number'
Я думал, что Record - это мое решение,но тоже не работает.
type FooCache = Record<FooId, Foo>;
({} as FooCache)['123' as FooId] = new Foo();
TS 7017: Элемент неявно имеет тип 'any', потому что тип Record<FooId, Foo>
не имеет подписи индекса
IsЕсть ли правильный способ решения этой проблемы в TypeScript?