Saya mencoba mendefinisikan objek dengan simbol sebagai tipe kunci sejak MDN mengatakan:
Nilai simbol dapat digunakan sebagai pengidentifikasi untuk properti objek [...]
Tetapi menggunakannya sebagai tipe untuk properti-kunci:
type obj = {
[key: symbol | string]: string
}
mengakibatkan kesalahan berikut:
TS1023: Jenis parameter tanda tangan indeks harus berupa 'string' atau 'angka'.
bahkan dapat digunakan sebagai tipe indeks. Saya menggunakan versi naskah terbaru ( v3.7.2
), pertanyaan terkait yang saya temukan:
- Naskah: merusak objek dengan simbol sebagai kunci (Dia menggunakan instance aktual dari Simbol, saya ingin tipenya
symbol
) - TypeScript: Parameter tanda tangan indeks harus berupa 'string' atau 'angka' ketika mencoba menggunakan string | jumlah
- ES6: merusak objek dengan simbol sebagai kunci (Itu tidak bisa menjadi solusi - tampaknya agak salah menggunakan instance aktual sebagai tipe karena setiap instance Symbol unik ...)
Saya juga telah melihat dokumen simbol naskah tetapi mereka hanya menunjukkan bagaimana itu digunakan sebagai nilai, bukan sebagai jenis.
Contoh:
const obj = {} as {
[key: number | symbol]: string // Won't work
};
const sym = Symbol('My symbol');
obj[sym] = 'Hi';
javascript
typescript
types
symbols
Simon
sumber
sumber
symbol
? Mungkin tunjukkan contoh bagaimana Anda ingin menggunakan milik Andatype obj
- Saya ragu bahwa semua properti dengan kunci simbol adalahstring
s.any
yang merupakan praktik buruk).Map<Symbol,String>
karena kami memiliki Peta, jika itu akan melayani tujuan dari apa yang Anda coba capaiJawaban:
Sayangnya ini tidak mungkin saat ini dalam TypeScript. Jika Anda harus beroperasi dengan beberapa API yang mengharapkan ini atau benar - benar ingin menggunakan simbol sebagai kunci, Anda dapat melakukan versi canggung ini:
sumber