52 / 40 / 15
Регистрация: 18.09.2020
Сообщений: 131
Записей в блоге: 3
1

Полиморфизма на примере TypeScript

21.04.2022, 21:01. Показов 974. Ответов 0

Author24 — интернет-сервис помощи студентам
Добрый день. Хочу привести несколько примеров полиморфизма на примере TypeScript. Делаю это с посылом "верно ли я понял?", а не "смотрите как надо!". Буду благодарен если поправите/дополните:

Javascript
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
    // мономорфная функция
    function foo(a: string) {
        // пример обычной мономорфной функции
    }
 
    // полиморфная функция
    // полиморфизм подтипов
    function bar(a: string|number) {
        // функция принимает параметр a, который может быть строкой или числом
        // то есть тип a: string|number это супертип для a: string и a: number
    }
 
    // полиморфная функция
    // параметрический полиморфизм
    function baz<A>(a: A) {
        // функция принимает параметр любого типа и можно сделать вывод, что это
        // параметрический полиморфизм. Но параметрический полиморфизм должен работать
        // одинаково для аргументов любого типа. В данном случае это не является возможным
        // Если сделать a.toUpperCase() для строки и для числа результаты будут отличаться
        // от возвращенной строки до выброса исключения.
    }
 
    function baz<A>(a: A[]) {
        // таже история, но тут результат работы будет одинаков для параметра любого типа
        return a.map((item) => console.log(item));
    }
 
    // ad-hoc полиморфизм перегрузка функции
    function fn(a: number, b: number): string;
    function fn(a: string|number, b?: number): string {
        return '';
    }
 
    // ad-hoc полиморфизм привидение типов
    function any(a: any) {
        switch (typeof a) {
            case 'string': return  a.toUpperCase();
            case 'number': return  a ** a;
        }
    }
 
    // полиморфизм подтипов с использованием наследования
    class Person {
        constructor(protected readonly name: string) {
            this.name = name;
        }
    
        public getName(): string {
            return this.name;
        }
    }
    
    class Guest extends Person {
        constructor(protected readonly name: string, protected readonly age: number) {
            super(name);
            this.age = age;
        }
    
        getName(): string {
            return super.getName() + ' ' + this.age;
        }
    }
 
    // полиморфизм подтипов без использования наследования
    interface IUser {
        getInfo(): string;
    }
    
    class User implements IUser {
        constructor(protected readonly name: string) {
            this.name = name;
        }
    
        getInfo(): string {
            return this.name;
        }
    }
    
    class Admin implements IUser {
        constructor(protected readonly name: string) {
            this.name = name;
        }
    
        getInfo(): string {
            return this.name;
        }
    }
Что мною понято не так? Спасибо
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
21.04.2022, 21:01
Ответы с готовыми решениями:

Не понимание полиморфизма и статического поля на примере представленного кода
Здравствуйте, Объясните мне пожалуйста по следующему коду: using System; class Base { }...

продемонстрировать механизм полиморфизма на примере составления списка студентов группы и преподавателей колледжа.
Средствами объектно-ориентированного программирования языка Delphi продемонстрировать механизм...

Нужен скрипт который разбирает данные как в примере, Нужно получить из данных таблицу по стандарту как в примере
Помогите получить макросом из этого листа ексел другой как ниже лист пример вот здесь. ...

Перевод C# на TypeScript
Доброго времени суток))) (Извините если не в ту тему) Существует рабочая программы для локального...

0
21.04.2022, 21:01
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
21.04.2022, 21:01
Помогаю со студенческими работами здесь

TypeScript vs Script# vs
У кого какой опыт ? - сравнительные достоинства и недостатки.

Сохранение this в TypeScript
Доброго дня. Подскажите пожалуйста, как можно сохранить this класса так, чтобы можно было...

TypeScript, ошибка
У меня проблема. Прописываю я код, в консоли мне не показывает ни одной ошибки. После написания...

Typescript instanceof
Здравствуйте! Подскажите, пожалуйста, почему данный код выводит false? export default class...

VS2012 + typescript 9.1.1
При работе с TypeScript VS2012 виснет или закрывается регулярно, никакой конкретной информации об...

Переделать условие из Typescript в JS
Функция принимает немного нестандартные значения здесь, помогите адаптировать первую строчку...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
1
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru