我對 TypeScript 有一些問題。我正在嘗試將一些來自父組件的值轉換為子組件。父級發送的值可以是 EN、FR 或 NL,我應該將這些值轉換為數字,所以我這樣做了:
const transform_translation = {
'EN': 1,
'FR': 2,
'NL': 3
};
但是當我試圖獲得價值時transform_translation[props.language],它說;
S7053:元素隱式具有“any”型別,因為“any”型別的運算式不能用于索引型別“{ EN: number; FR:數字;荷蘭語:
道具:
props: {
language: {
type: String,
default: ['EN', 'NL', 'FR'],
required: true
},
.
.
.
}
那我應該如何定義它們呢?順便說一句,我第一次與 TS 合作。
數字; }'。
uj5u.com熱心網友回復:
您應該告訴 ts 您傳遞的內容不僅僅是字串,而且僅限于您擁有的語言的可用鍵:
const transform_translation = {
EN: 1,
FR: 2,
NL: 3
};
// create type out of valid keys of object
type Language = keyof typeof transform_translation;
const getLanguageNum = (lang: Language) => transform_translation[lang];
console.log(getLanguageNum("EN")); // 1
uj5u.com熱心網友回復:
我會像這樣為鍵創建一個列舉或型別。然后在訪問它時,您可以將密鑰轉換為型別,如下所示
type ITransformTranslationKey = 'EN' | 'FR' | 'NL';
const transform_translation: Record<ITransformTranslationKey, number> = {
'EN': 1,
'FR': 2,
'NL': 3
};
const someVar: ITransformTranslationKey = 'E' 'N'; // you can define the type here
transform_translation[someVar as ITransformTranslationKey] // or here
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/390806.html
標籤:javascript 打字稿
