Я намагаюся визначити об'єкт із символом як тип ключа, оскільки MDN говорить:
Значення символу може бути використане як ідентифікатор властивостей об'єкта [...]
Але використовуючи його як тип для властивості ключа:
type obj = {
[key: symbol | string]: string
}
призводить до наступної помилки:
TS1023: Тип параметра підпису індексу повинен бути або "рядок", або "число".
навіть він може використовуватися як індексний тип. Я використовую останню версію машинопису ( v3.7.2
), пов'язані з нами питання:
- Typescript: знищення об'єкта з символами як ключами (він використовує фактичний екземпляр Symbol, я хочу тип
symbol
) - TypeScript: Параметр підпису індексу повинен бути "рядок" або "число" при спробі використання рядка | число
- ES6: деструкція об'єкта із символами як ключами (це не може бути рішенням - здається, що неправильно використовувати фактичний екземпляр як тип, оскільки кожен екземпляр Symbol унікальний ...)
Я також розглянув документи символів машинопису, але вони лише показують, як він використовується як значення, а не як тип.
Приклад:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
any
шкідливої практики).
Map<Symbol,String>
як у нас Карта, якщо це буде служити цілі того, чого ти намагаєшся досягти
symbol
? Можливо, покажіть приклад того, як ви хочете використовувати своїtype obj
- я сумніваюся, що всі властивості, націлені символом, будутьstring
s.