Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- interface iResponse {name: string; description: string}
- const obj:iResponse = {
- name: "asdf",
- description: "fasdf",
- }
- class Data {
- public request(): string {
- return JSON.stringify(obj);
- }
- }
- class MockData {
- public specificRequest(): iResponse {
- return obj
- }
- }
- class Adapter extends Data {
- private mockData: MockData;
- constructor(mockData: MockData) {
- super();
- this.mockData = mockData;
- }
- public request(): string {
- return JSON.stringify(this.mockData.specificRequest());
- }
- }
- function clientCode(target: Data) {
- console.log(target.request());
- }
- console.log('Клиентский код работает с обычными объектами типа "Data"');
- const data = new Data();
- clientCode(data);
- const mockData = new MockData();
- console.log('Но не понимает данные возвращаемые объектом типа "MockData"');
- console.log(`MockData: ${mockData.specificRequest()}`);
- console.log('Адаптер преобразует интерфейс "MockData" к "Data"');
- const adapter = new Adapter(mockData);
- clientCode(adapter);
Advertisement
Add Comment
Please, Sign In to add comment