Saya cuba menukar js berikut kepada skrip taip tetapi saya menghadapi masalah menyemak objek account
saya kerana ia tidak diperuntukkan jadi kod tidak akan dibina:
const accounts = state.msalInstance.getAllAccounts(); let account; if (accounts.length) { account = accounts[0]; } else { await state.msalInstance .handleRedirectPromise() .then(redirectResponse => { if (redirectResponse !== null) { account = redirectResponse.account; } else { state.msalInstance.loginRedirect(); } }) .catch(error) => { console.error(`Error during authentication: ${error}`); }); } if (account) {}
Kod di atas berfungsi dengan baik dalam js jadi saya telah menukarnya kepada ts berikut, tetapi sekarang yang terakhir if
tidak akan disusun kerana saya cuba menggunakan pembolehubah akaun sebelum memberikan apa-apa:
const accounts = state.msalInstance.getAllAccounts(); let account: object; if (accounts.length) { account = accounts[0]; } else { await state.msalInstance .handleRedirectPromise() .then((redirectResponse: { account: object; }) => { if (redirectResponse !== null) { account = redirectResponse.account; } else { state.msalInstance.loginRedirect(); } }) .catch((error: { name: string; }) => { console.error(`Error during authentication: ${error}`); }); } if (account) { // this won't compile anymore as account isn't assigned }
Bagaimana untuk menukar objek account
untuk melihat sama ada ia kosong atau tidak jelas? Saya cuba menetapkannya secara khusus kepada null tetapi ia mengatakan saya tidak boleh menetapkan objek kepada null.
Penyelesaian kepada masalah tidak boleh menggunakan pembolehubah sebelum memberikannya adalah sangat mudah - hanya berikan nilai.
Anda boleh menentukan bahawa nilainya pada mulanya adalah
未定义
,这就是已声明但未赋值的变量所发生的情况。或者您可以使用更有意的“无值”初始值,例如null
.Sudah tentu ini akan menukar jenis pembolehubah anda kepada kesatuan yang mengandungi nilai awal ini, tetapi itu konsisten dengan cara anda menggunakannya jadi saya rasa ia tidak akan menjadi isu.
By the way, adakah
object
并不是一个很好用的类型。如果您有 linting,您可能会收到警告。某种形式的记录
a> lebih berguna/lebih jelas kepada anda?Apabila anda melakukannya ->
Anda memberitahu Typescript bahawa akaun itu hanya boleh menjadi satu
对象
,但是 Typescript 会让你延迟分配它,但是如果它检测到有可能永远不会将对象分配给帐户,它会给你 ->变量“account”在分配之前使用。
Layani seperti anda sedang menjalani ujian sebenar ->
if (account) {
Secara logiknya jenis anda adalah
object
或undefined
Dalam sesetengah kes mungkin lebih masuk akal untuk membatalkan tetapan nilai secara eksplisit, jadi sesetengah orang suka menggunakan
untuk itu juganull
->let account:object |空=空