kamus - Tidak bisa menggunakan angka sebagai kunci di Map Typescript?


Di dalam kelas:

private stuff: Map<number, string> = new Map();

...

this.stuff[aNumber] = "hello";

Memberikan kesalahan ini:

Elemen secara implisit memiliki tipe any karena ekspresi dengan tipe number tidak dapat digunakan untuk mengindeks tipe Map<number, string>.

Tidak ada tanda tangan indeks dengan parameter bertipe number yang ditemukan pada tipe Map<number, string>

Ini tidak masuk akal bagi saya. Mengapa Map<number, string> tidak mendeklarasikan tanda indeks dengan parameter bertipe number?

Jawaban #1

Ini karena Map tidak menggunakan pengindeks - itu menggunakan metode get/set.

let foo: Map<number, string> = new Map();
foo.set(2, "something");
let some = foo.get(2);

Yang bisa Anda lakukan adalah menggunakan objek peta kustom number: string

let bar: { [key: number]: string } = {};
bar[1] = "some";
bar["sl"] = "some" // error

Silakan lihat taman bermain.