2017-06-29 63 views
0

我在這個打字稿代碼的實現中遇到錯誤。我在這裏將一種類型映射到另一種類型。但是,在分配之前,vscode顯示變量'test'被使用的錯誤。任何人都可以請幫忙?在分配之前使用變量'test' - Typescript

interface A { 
    name: string; 
    age: string; 
    sex: string; 
} 

interface B { 
    name: any; 
    age: string; 
    sex: string; 
} 

const modifyData = (g : B) :A => { 

    let test: A; 
    test.name = g.name['ru']; 
    test.age = g.age; 
    test.sex = g.sex; 

    return test as A; 
}; 

const g = [{ 
    "name": { 
     "en": "George", 
     "ru": "Gregor" 
     }, 
    "age": "21", 
    "sex": "Male" 
}, 
{ 
    "name": { 
     "en": "David", 
     "ru": "Diva" 
     },, 
    "age": "31", 
    "sex": "Male" 
}]; 

const data = g.map(modifyData); 
console.log(data); 
+1

'讓測試:A'定義'test',但不會將其分配到任何東西。因此,在設置其'name'屬性時會出現運行時錯誤。編譯器試圖告訴你先分配它。 –

+0

如果我正在試圖做這個 讓我們測試:A = {' name:'', age:'', 性別:'', }; 它工作正常嗎? – dhruv2204

+0

嘗試看看...似乎你想要的是'let test:A = {name:g.name ['ru'],age:g.age,sex:g.sex};' –

回答

1

確實未分配。它被定義,但沒有價值。

恕我直言,乾淨的方法將返回字面

const modifyData = (g: B):A => { 
    return { 
     name: g.name['ru'], 
     age: g.age, 
     sex: g.sex 
    } as A; 
}; 
相關問題