sdfxs

Untitled

May 11th, 2021
618
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. interface iResponse {name: string; description: string}
  2. const obj:iResponse  = {
  3.     name: "asdf",
  4.     description: "fasdf",
  5. }
  6.  
  7.  
  8. class Data {
  9.     public request(): string {
  10.         return JSON.stringify(obj);
  11.     }
  12. }
  13.  
  14. class MockData {
  15.     public specificRequest(): iResponse {
  16.         return obj
  17.     }
  18. }
  19.  
  20. class Adapter extends Data {
  21.     private mockData: MockData;
  22.  
  23.     constructor(mockData: MockData) {
  24.         super();
  25.         this.mockData = mockData;
  26.     }
  27.  
  28.     public request(): string {
  29.         return JSON.stringify(this.mockData.specificRequest());
  30.     }
  31. }
  32.  
  33. function clientCode(target: Data) {
  34.     console.log(target.request());
  35. }
  36.  
  37. console.log('Клиентский код работает с обычными объектами типа "Data"');
  38. const data = new Data();
  39. clientCode(data);
  40.  
  41. const mockData = new MockData();
  42. console.log('Но не понимает данные возвращаемые объектом типа "MockData"');
  43. console.log(`MockData: ${mockData.specificRequest()}`);
  44.  
  45. console.log('Адаптер преобразует интерфейс "MockData" к "Data"');
  46. const adapter = new Adapter(mockData);
  47. clientCode(adapter);
RAW Paste Data