2 回答

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個贊
是的,你可以這樣做。如果使用此方法,您將需要小心繼承模式。您可能需要考慮向用戶對象添加角色屬性并將其用于檢查。
使用角色屬性的示例。
if (user.role === 'ADMIN') {
...
}
instanceof 對你產(chǎn)生適得其反的例子
class User {}
class Admin extends User {}
const user = new User;
const admin = new Admin;
console.log(user instanceof User); // true
console.log(user instanceof Admin); // false
console.log(admin instanceof User); // true **watch out for this**
console.log(admin instanceof Admin); // true

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個贊
該
instanceof
運(yùn)算符測試構(gòu)造函數(shù)的原型屬性是否出現(xiàn)在對象原型鏈中的任何位置。返回值是一個布爾值。
因此,如果是或其子類實(shí)例,user instanceof Admin
將測試為正。使用這種模式在 JS/TS 世界中非常常見,只要正確驗(yàn)證用戶并且返回相同的類方法,它就是安全的。user
Admin
auth.authenticate()
Admin
authenticate
同樣在 TypeScript 中instanceof
被視為TypeGuard,因此在if
塊內(nèi)您可以用作user
實(shí)例Admin
(例如,如果管理實(shí)例有更多方法)。
添加回答
舉報(bào)