typescript - 测试 Typescript 中的字符串文字类型

标签 typescript

我定义了以下类型:

输入 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/

相关文章:

angularjs - 无法根据 typeof 对象使用 switch 语句

angular - 我们什么时候需要在 Angular 中创建服务?

javascript - 使用 forRoot 将变量传递给模块

typescript - typescript 类型中的 "three dots"是什么意思?

typescript - 虚假标记不会引发 typescript 错误

excel - 将自定义函数添加到现有的 excel 加载项(由 visual studio 生成)

javascript - Angular - 错误 : Can't resolve 'classlist.js'

Javascript:从嵌套函数调用外部方法

arrays - Angular 6 *ngFor 显示第一个、奇数、偶数和最后一个的不同样式

typescript - 间接引用远程 Javascript URL