Menggunakan satu sifat dalam antara muka sebagai panjang tatasusunan sifat lain dalam antara muka yang sama
P粉032977207
P粉032977207 2023-09-16 23:36:08
0
1
646

Saya mempunyai antara muka yang akan digunakan sebagai prop untuk beberapa komponen untuk memaparkan peranti yang berbeza. Setiap peranti akan diletakkan pada kad dalam lajur grid.

Ini ialah antara muka:

interface EquipmentSectionProps {
  bgColor: "black" | "lightGrey";
  columns: number;
  category: string;
  products: string[];
  productImages: string[];
  productReferals: string[];
}

Memandangkan lajur atribut, saya ingin mengehadkan saiz tatasusunan productsproductImagesproductReferals mengikut lajur atribut, kerana penggunaannya berkaitan dengan bilangan lajur.

Percubaan pertama yang jelas ialah menghantar lajur atribut terus ke dalam tatasusunan, seperti ini:

interface EquipmentSectionProps {
  bgColor: "black" | "lightGrey";
  columns: number;
  category: string;
  products: string[columns];
  productImages: string[columns];
  productReferals: string[columns];
}

Namun, maklum balas kembali:

Cannot find name 'columns'.ts(2304) type columns = /*unresolved*/ any

Adakah terdapat cara yang lebih mudah untuk mencapai ini tanpa membuat antara muka pendua dan menghantar sifat kepada antara muka baharu?

P粉032977207
P粉032977207

membalas semua(1)
P粉194919082

Malangnya, anda tidak boleh mengehadkan panjang tatasusunan melalui jenis TypeScript (seperti pengisytiharan antara muka yang anda tunjukkan). Anda perlu menulis semakan panjang dalam kod komponen.

Walaupun terdapat cara dalam javascript untuk memulakan tatasusunan dengan panjang tertentu, javascript itu sendiri tidak mempunyai mekanisme untuk menguatkuasakan panjang yang tidak berubah. Tiada apa-apa untuk menghalang panjang tatasusunan daripada meningkat, yang bermaksud anda perlu menyemak panjang secara eksplisit mengikut keperluan.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan