Skip to content

Instantly share code, notes, and snippets.

@asduser
Last active January 12, 2017 20:38
Show Gist options
  • Save asduser/763d0512df3b118f0a74889cf5828f33 to your computer and use it in GitHub Desktop.
Save asduser/763d0512df3b118f0a74889cf5828f33 to your computer and use it in GitHub Desktop.
try\catch for JSON.parse
const loadDataOrDefault = <T>(response: any, defInstance?: T) => {
try {
return JSON.parse(response);
} catch(e) {
return defInstance ? defInstance : null;
}
};
class Person {
constructor(public name: string = "Default", public age: number = 100) {}
}
let data1 = loadDataOrDefault('undefined');
let data2 = loadDataOrDefault<Number>('undefined', 20);
let data3 = loadDataOrDefault<Person>('undefined', new Person());
console.log(data1);
console.log(data2);
console.log(data3);
const loadDataOrDefault = (response: any, DefaultType?: any) => {
try {
return JSON.parse(response);
} catch(e) {
return DefaultType && typeof DefaultType == "function" ? new DefaultType() : null;
}
};
class Person {
constructor(public name: string = "Default", public age: number = 100) {}
}
let data1 = loadDataOrDefault('undefined');
let data2 = loadDataOrDefault('undefined', 20);
let data3 = loadDataOrDefault('undefined', null);
let data4 = loadDataOrDefault('undefined', Person);
console.log(data1);
console.log(data2);
console.log(data3);
console.log(data4);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment