2 回答

TA貢獻1794條經驗 獲得超7個贊
是的,你可以這樣做。如果使用此方法,您將需要小心繼承模式。您可能需要考慮向用戶對象添加角色屬性并將其用于檢查。
使用角色屬性的示例。
if (user.role === 'ADMIN') {
...
}
instanceof 對你產生適得其反的例子
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貢獻1864條經驗 獲得超2個贊
該
instanceof
運算符測試構造函數的原型屬性是否出現在對象原型鏈中的任何位置。返回值是一個布爾值。
因此,如果是或其子類實例,user instanceof Admin
將測試為正。使用這種模式在 JS/TS 世界中非常常見,只要正確驗證用戶并且返回相同的類方法,它就是安全的。user
Admin
auth.authenticate()
Admin
authenticate
同樣在 TypeScript 中instanceof
被視為TypeGuard,因此在if
塊內您可以用作user
實例Admin
(例如,如果管理實例有更多方法)。
添加回答
舉報