class LocalDB {
constructor(private localStorageKey: string) {
}
add(v: User) {
localStorage.setItem(this.localStorageKey, JSON.stringify(v));
}
get(): User {
const v = localStorage.getItem(this.localStorageKey);
return (v) ? JSON.parse(v) : null;
}
}
//1.
interface User { name: string }
const userDb = new LocalDB('user');
userDb.add({ name: 'jay' });
const userA = userDb.get(); // userA은 타입이 any로 있다.
userA.name; // userA에 대해서 타입을 고정해 보자 => 1.
LocalDB를 유저 하나의 하나의 타입만 넣고 빼고 싶은 것이 아니라 여러 타입에 대해서 처리하고 싶다면
class LocalDB<T> {
constructor(private localStorageKey: string) {
}
add(v: T) {
localStorage.setItem(this.localStorageKey, JSON.stringify(v));
}
get(): T {
const v = localStorage.getItem(this.localStorageKey);
return (v) ? JSON.parse(v) : null;
}
}
//1.
interface User { name: string }
const userDb = new LocalDB<User>('user');
userDb.add({ name: 'jay' });
const userA = userDb.get();
userA.name;