Saya sedang menulis fungsi TypeScript dan IDE saya memberitahu saya bahawa hasil .shift() mungkin tidak ditentukan, yang menghasilkan lebih banyak jenis amaran...
Ini kodnya:
function accumulateProofs( proofs: Proof[], requiredAmount: Number, strategy: 'middle' | 'ascending' | 'descending', ): Proof[] { const result:Proof[] = []; const temp = proofs.slice(); let total = 0; switch (strategy) { case 'middle': { while (temp.length && total < desired) { const first = temp.shift(); total += first.amount; result.push(first); if (total >= desired) { break; } const last = temp.pop(); total += last; result.push(last); } } } return result }
Sekarang saya faham bahawa amaran ini masuk akal apabila anda tidak dapat memastikan sama ada terdapat sebarang elemen dalam tatasusunan, dalam kes ini .shift() akan kembali tidak ditentukan. Tetapi dalam kes ini gelung while saya hanya berjalan apabila temp.length adalah benar, dalam hal ini saya tahu temp.shift() akan mengembalikan nilai dan bukannya undefined... adakah saya kehilangan sesuatu?
Kaedah generik untuk
shift
被定义为Array
dan mempunyai tandatangan berikut:Array<T>.shift(): T |未定义
Jadi tidak kira sama ada kod anda menyasarkan
temp.length
断言,当您调用shift
atau tidak, anda mesti mengharapkan jenis pulangan:T |未定义
Anda hanya perlu menambah nilai lalai:
Begitu juga dengan
temp.pop()
.Ini ialahts-taman permainan