typescript - 处理函数的返回类型
问题描述
我是打字稿的新手并面临一个问题:
type TLang = 'en' | 'ar'
export const getIntlLang = (): 'en' | 'ar' => {
const validLangs = ['en', 'ar'];
const urlParams = new URLSearchParams(window.location.search);
let userLang: TLang = 'ar';
const customLang = urlParams.get('language') || '';
if (customLang && validLangs.includes(customLang)) {
userLang = customLang; // **Type 'string' is not assignable to type** '"en" | "ar"'
} else {
const language: TLang =
window.localStorage && window.localStorage.getItem('language');
if (language && validLangs.indexOf(language) >= 0) {
userLang = language;
}
}
updateLang(userLang);
return userLang;
};
我希望函数的返回类型具体为“en”或“ar”。我在这里收到错误:类型'字符串'不可分配给类型'“en” | “阿尔”。我应该如何解决这个问题?
解决方案
这是为我解决问题的方法:
export const getIntlLang = (): TLang => {
const urlParams = new URLSearchParams(window.location.search);
let userLang: TLang = 'ar';
const customLang = urlParams.get(LANGUAGE_KEY);
if (customLang === 'ar' || customLang === 'en') {
userLang = customLang;
} else {
const language =
window.localStorage && window.localStorage.getItem(LANGUAGE_KEY);
if (language === 'en' || language === 'ar') {
userLang = language;
}
}
updateLang(userLang);
return userLang;
};
推荐阅读
- javascript - 如何使 eonasdan datetimepicker css 正常工作?
- python - 如何将 validate_email 包包含到 django UserCreationForm 中?
- javascript - 使用 puppeteer 循环遍历列表并单击按钮
- java - 如何重新排列数组以使空值占据数组的开头?
- outlook - Outlook Rest API 访问被拒绝。检查凭据并重试
- c# - 为什么我在 ASP.NET 4.5 中的 Web ASP 控制器响应多个控制器的错误?
- java - 使用 mvvm 时将业务逻辑放在哪里
- c# - 如何在 OPC.UA 中获取节点的 DataType 属性
- python - Hangman Code 卡在 try/except 块上
- javascript - 无法使用角度材料创建带有复选框和数据的嵌套可扩展行