Advertisement
Guest User

Untitled

a guest
Feb 13th, 2017
143
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.97 KB | None | 0 0
  1. interface IUser {
  2. username: string;
  3. pass: string;
  4. id: number;
  5. }
  6.  
  7. type IPartial<TObject> = {
  8. [property in keyof TObject]?: TObject[property];
  9. }
  10.  
  11. class User<TParams> {
  12. constructor(private params: IPartial<TParams>) {
  13.  
  14. }
  15.  
  16. public set<TKey extends keyof TParams>(key: TKey, value: TParams[TKey]): void;
  17. public set(params: IPartial<TParams>): void;
  18. public set(key? :any, value?: any): void {
  19. if (typeof key === 'string') {
  20. this.params[key as keyof TParams] = value;
  21. return;
  22. }
  23. else if (typeof key === 'object') {
  24. const params = key as IPartial<TParams>;
  25.  
  26. for (let paramKey in params) {
  27. this.set(paramKey, params[paramKey]);
  28. }
  29.  
  30. return;
  31. }
  32. else {
  33. throw new TypeError('func up');
  34. }
  35. }
  36.  
  37. public get<TKey extends keyof TParams>(key: TKey): TParams[TKey] {
  38. return this.params[key];
  39. }
  40. }
  41.  
  42. const usr = new User<IUser>({
  43. pass: '123'
  44. });
  45.  
  46. usr.set('pass', '123');
  47. usr.set('id', 1);
  48.  
  49. usr.set({
  50. pass: 'google'
  51. })
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement