Saya tahu ini 100% pertanyaan noob, tetapi saya tidak dapat menangani diri saya sendiri dan ingin tahu jawabannya. ketik SweetAlertPosition = 'atas' | 'top-start' | 'kelas atas' | 'kiri atas' | 'kanan atas' | 'tengah' | '...

0
Anton 5 April 2021, 15:37

2 jawaban

Jawaban Terbaik

Saat mendeklarasikan variabel const, tipenya diturunkan hanya dari nilai yang Anda tetapkan padanya, bukan dari tempat variabel digunakan (inferensi tipe lengkap). Saat menginisialisasi variabel dengan literal objek, jenis propertinya dilebarkan sehingga Anda dapat menetapkan string atau angka lain - kecuali jika Anda mempersempitnya dengan as const.

Saat melewatkan objek literal sebagai argumen, tipenya disimpulkan dari tipe parameter dari fungsi yang dipanggil.

Dalam kasus Anda, saya tidak akan menulis as const tetapi merekomendasikan

const defaultOptions: SweetAlertOptions = {
   position: 'bottom'
};
1
Bergi 5 April 2021, 12:49

Masalahnya adalah defaultOptions memiliki tipe { position: string } kecuali jika Anda melakukan sesuatu, seperti ini:

const defaultOptions: SweetAlertOptions = {
   position: 'bottom'
}

Di sini, kami secara eksplisit menyatakan bahwa defaultOptions bertipe SweetAlertOptions dan kemudian tidak ada kesalahan saat meneruskan ke mixin.

Dalam contoh melewatkan nilai secara eksplisit, kompiler dapat menginterpretasikan objek dalam konteks panggilan.

Misalnya di naskah Playground

1
crashmstr 5 April 2021, 12:48