我定义了以下类型:
输入 Admin: 'ADMIN' | '代理';
我有一个从本地存储返回用户角色的函数:
return localStorage.getItem('角色');
我想测试返回的项目是否是上述字符串文字之一。
最佳答案
你应该创建一个类型保护:
function isAdmin(arg: string): arg is Admin {
return arg === 'ADMIN' || arg === 'AGENT';
}
然后在你的代码中:
let role: string = localStorage.getItem('role');
if (isAdmin(role)) {
... here role has the type Admin ...
}
类型保护是函数的一种特殊形式,其中返回断言其参数的类型。然后编译器知道当函数返回 true
时参数具有指定的类型。
不幸的是,如果不重复字符串并至少编写一次显式测试,就无法做到这一点,但至少您可以编写一次代码并使用它来扩展类型检查以安全地覆盖值。
关于typescript - 测试 Typescript 中的字符串文字类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44695085/