Typescript 函数的句柄返回类型
我是打字新手,面临一个问题:Typescript 函数的句柄返回类型,typescript,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 = urlPara
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”。我在这里得到的错误是:类型'string'不能赋值给类型'en'|“ar'”。我应该如何解决这个问题?以下是解决问题的方法:
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;
};
我希望函数的返回类型具体为“en”或“ar”。不string@MauriceNino那么我应该做什么更改来确保我只返回'en'或'ar'您返回的是一个基类型为string的特定枚举值。因此,让您的enum类如我所说,代码已经在处理null情况,如果为null,它将返回'ar'。如何让typescript知道this@MauriceNino因为“en”和“ar”是字符串。。。否。ts中有类型文字。对于ts,“en”不是字符串而是自定义类型。是的,sting-literal和sting对于typescript不是同一类型。如果(语言=='en'| |语言=='ar')。。。从现在起,ts编译器可以推断类型文字。。。对于ts,“ar”不是字符串,而是类型“ar”。这是一个很好的解决方案