MDN söylediği için sembollü bir nesneyi anahtar türü olarak tanımlamaya çalışıyorum :
Bir sembol değeri nesne özellikleri için tanımlayıcı olarak kullanılabilir [...]
Ancak bunu anahtar özellik için tür olarak kullanmak:
type obj = {
[key: symbol | string]: string
}
aşağıdaki hatayla sonuçlanır:
TS1023: Bir dizin imzası parametre türü 'dize' veya 'sayı' olmalıdır.
Hatta yapabilirsiniz endeksi-türü olarak kullanılabilir. v3.7.2Bulduğum ilgili en son typescript sürümünü ( ) kullanıyorum :
- Daktilo: anahtar olarak sembollerle bir nesneyi yok etmek (bir sembolün gerçek bir örneğini kullanıyor, türünü istiyorum
symbol) - TypeScript: Dizeyi kullanmaya çalışırken bir dizin imza parametresi 'dize' veya 'sayı' olmalıdır | numara
- ES6: anahtar olarak semboller içeren bir nesneyi yok etme (Bu bir çözüm olamaz - her Symbol örneğinin benzersiz olması nedeniyle gerçek bir örneği tür olarak kullanmak biraz yanlış görünüyor ...)
Ayrıca daktilo sembol dokümanlar bir göz attım ama onlar sadece nasıl değer olarak kullanıldığını, türü olarak gösterir.
Misal:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
anyki bu kötü uygulama kullanmadan).
Map<Symbol,String>
symbol? Belki senin nasıl kullanmak istediğine bir örnek göstertype obj- Tüm sembol anahtarlı özelliklerinstrings olacağından şüpheliyim .