[TS] Classe et fichier JSON
Salut A tous,
Après plusieurs ébauche en es6 j'ai commencé à travailler sur typescript.
Sur les grande lignes je voudrait transformer un fichier JSON sur plusieurs niveaux(Recursivité)
Je l'ai fait avec es6 et un map(finalement pas concluent pour moi) vu que je travail avec typescript.
idealement je voudrait créer un classe pour cela voici ma première classe pour mes type primitfs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41
|
export namespace ValueModule{
export interface IValue {
_keyValue:string;
_userValue:string;
}
export class Value implements IValue{
_keyValue : string;
_userValue : string;
constructor(keyValue: string, userValue: string) {
this._keyValue = keyValue;
this._userValue = userValue;
}
get keyValue(): string {
return this._keyValue;
}
set keyValue(value: string) {
this._keyValue = value;
}
get userValue(): string {
return this._userValue;
}
set userValue(value: string) {
this._userValue = value;
}
}
} |
et pour ma classe pour les types un a plusieurs:
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
|
import {ValueModule} from "./Value";
export namespace ValueArrayModule{
import Value = ValueModule.Value;
export interface IValuesArray{
_keyValue?:string;
_arrayValues?:Array<Value>;
}
export class ValueArray implements IValuesArray{
public _keyValue : string;
public _arrayValues : Array<Value>;
constructor(keyValue:string,arrayValues:Array<Value>)
{
this._keyValue = keyValue;
this._arrayValues = arrayValues;
}
get keyValue(): string {
return this._keyValue;
}
set keyValue(value: string) {
this._keyValue = value;
}
get arrayValues(): Array<Value> {
return this._arrayValues;
}
set arrayValues(value: Array<Value>) {
this._arrayValues = value;
}
}
} |
et ma fonction dont je n'arrive pas a transposer le tous en modèle objets:
je sais si mes instanciation sont exact ou non..
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
|
function compare(baseKeys,mPerm)
{
mPerm={};
Object.keys(baseKeys).forEach(key =>{
if(baseKeys.hasOwnProperty(key))
{
if(typeof baseKeys[key] !== 'object')
{
mPerm= new Value(key, baseKeys[key]);
}
else
{
compare(baseKeys[key],mPerm);
mPerm = new ValueArray(key,baseKeys[key]);
}
}
});
return mPerm
} |
j'ai une erreur de ce type:
Code:
TypeError: Cannot read property 'Value' of undefined
cette methode est impossible..
Il ne faut pas creer de classe a cette fin
car un fichier de traduction peux evoluer dans le temps
alors qu'un objet est statique au niveaux de ces clés..
Il faut passer par SET ou MAP..