У меня есть следующие настройки данных (не объявленные как enum
, потому что они используются совместно с серверным кодом TypeScript и клиентским кодом, отличным от TypeScript):
import { enumType } from 'nexus';
export const TYPE_ENUM = Object.freeze({
H: 'H',
S: 'S',
});
export const TYPES = Object.freeze(Object.values(TYPE_ENUM));
export const MyType = enumType({
name: 'MyType',
members: TYPES,
});
TypeScript дает мне следующее предупреждение относительно поле members
:
Type '(readonly string[])[]' is not assignable to type '(string | EnumMemberInfo)[] | Record<string, string | number | boolean | object>'.
Type '(readonly string[])[]' is not assignable to type '(string | EnumMemberInfo)[]'.
Type 'readonly string[]' is not assignable to type 'string | EnumMemberInfo'.
Type 'readonly string[]' is not assignable to type 'string'.ts(2322)
enumType.d.ts(29, 3): The expected type comes from property 'members' which is declared here on type 'EnumTypeConfig<"MyType">'
Я понимаю ошибку. Невозможно поместить readonly string[]
во что-то, ожидающее string[]
, потому что это разные типы. У меня вопрос: как лучше всего это преодолеть?
Я видел, что распаковка и воссоздание массива работают: members: [...TYPES]
но это кажется неправильным.