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
(例如,如果管理实例有更多方法)。
添加回答
举报