我们正在使用库msal
,并试图将我们的javaScript代码转换为TypeScript。
下图表明TS正确知道cacheLocation
的类型。可以是字符串localStorage
,字符串sessionStorage
或undefined
。但是,当尝试将其与包含期望值之一的变量连接在一起时,它将失败:
将使用以下语法解决此问题。在这种情况下,唯一的问题是没有将错误的值标记为不正确:
在阅读TS docs on Type Assertions时,它表示这是设计使然,开发人员知道该类型将是正确的。但是我确实希望TS如果使用未知值会抛出错误。
有更好的方法吗?还是这仅仅是它的完成方式?抱歉,如果这是一个愚蠢的问题,我仍在学习TS。
代码
import * as config from 'src/app-config.json'
import { Configuration, CacheLocation } from 'msal'
const test = 'wrongValue'
export function MSALConfigFactory(): Configuration {
return {
auth: {
clientId: config.auth.clientId,
authority: config.auth.authority,
validateAuthority: true,
redirectUri: config.auth.redirectUri,
postLogoutRedirectUri: config.auth.postLogoutRedirectUri,
navigateToLoginRequestUrl: true,
},
cache: {
cacheLocation: test as CacheLocation,
storeAuthStateInCookie: false,
},
}
}