Usage:
localStorage.setItem(, )
localStorage.getItem()
localStorage.clearItem()
localStorage.clear()
LocalStorage API
interface SStorage<T> {
[key:string]: T
}
abstract class LocalStorage<T> {
private storage : SStorage<T> = {}
// 밑에처럼 컴파일됨.
// constructor() {
// this.storage = {};
// }
setItem(key:string, value:T){
this.storage[key] = value;
}
clearItem(key:string){
delete this.storage[key]
}
getItem(key:string):T {
return this.storage[key]
}
clear(){
this.storage = {}
}
}
type successFn = (position:GeolocationPosition) => void
type errorFn = (positionError:GeolocationPositionError) => void
type optionsObj = {maximumAge:number,timeout:number,enableHighAccuracy:boolean}
class FakeGeolocation {
getCurrentPosition(success: successFn): void
getCurrentPosition(success: successFn, error:errorFn): void
getCurrentPosition(success: successFn, error:errorFn, options:optionsObj): void
getCurrentPosition(success: successFn, error?:errorFn, options?:optionsObj){
//구현하는 식을 여기에 쓴다.
}
watchPosition(success: successFn): number
watchPosition(success: successFn, error:errorFn): number
watchPosition(success: successFn, error:errorFn, options:optionsObj): number
watchPosition(success: successFn, error?:errorFn, options?:optionsObj){
//구현하는 식을 여기에 쓴다.
return 1;
}
clearWatch(id:number){}
}
type Place = {
longtitude: number;
latitude: number;
accuracy:number;
}
interface Llocation {
[id:number] : Place
}
interface CurrentPosition{
successFn: typeof successFn
errorFn?:typeof errorFn
optionsObj?: optionsObj
}
interface optionsObj {
enableHighAccuracy?: boolean
maximumAge?: number
timeout?: number
}
function successFn(pos: Place) {
const crdLt = pos.longtitude;
const crdLat = pos.latitude;
const crdAc = pos.accuracy;
}
function errorFn(err: { code: string; message: string; }) {
console.warn(`ERROR(${err.code}): ${err.message}`);
}
abstract class Ggeolocation {
private llocation : Llocation = {}
getCurrentPosition({successFn, errorFn, optionsObj} : CurrentPosition){
if(this.llocation[id] ? successFn : errorFn)
}
watchPosition({successFn,errorFn,optionsObj}:CurrentPosition){
return this.llocation[id]
}
clearWatch(id:number){
delete this.llocation[id]
}
}