2017-06-29 1 views
0

Ich bekomme Fehler in dieser Implementierung von Typoskript-Code. Ich mappe hier einen Typ zum anderen. Aber vscode zeigt einen Fehler an, dass die Variable 'test' verwendet wird, bevor sie zugewiesen wird. Kann mir bitte jemand helfen?Variable "Test" wird verwendet, bevor zugewiesen - Typoskript

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

'lassen Test wörtliche zurückkehren: A' definiert' test', ist aber nicht auf etwas zuweisen. Daher erhalten Sie einen Laufzeitfehler, wenn Sie die 'name' -Eigenschaft festlegen. Der Compiler versucht Ihnen zu sagen, dass Sie ihn zuerst zuweisen müssen. –

+0

Wenn ich versuche, dies zu tun lassen Test: A = { Name: '', Alter: '', Geschlecht: '', }; Es funktioniert dann gut? – dhruv2204

+0

Probieren Sie es aus und sehen Sie ... Scheint, wie Sie wollen, ist 'Let Test: A = {Name: g.name [' ru '], Alter: g.age, Geschlecht: g.sex}; ' –

Antwort

1

Es ist in der Tat nicht zugewiesen. Es ist definiert, hat aber keinen Wert.

IMHO würde sauberste Weg

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