Функциональное программирование в Angular?

Я новичок в angular и просматриваю учебник на официальном сайте. Он широко использует классы. Каждый компонент — это класс, в отличие от функциональных компонентов React. Есть ли что-то подобное в Angular?

Вы спрашиваете, поддерживает ли Angular функциональное программирование?

Abra 25.12.2020 08:40

да, а также, если можно использовать простой JS в Angular 11 вместо TypeScript.

ElectronDevTools007 25.12.2020 08:44

@Abra, я полагаю, вы перепутали функциональное реактивное программирование или просто реактивное программирование с функциональным программированием.

Dario Piotrowicz 25.12.2020 12:01
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
5
3
6 936
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Ответ принят как подходящий

Нет на оба вопроса.

Angular — довольно строгий фреймворк, и вам нужно следовать его правилам, компоненты реализованы с помощью классов, и это не так.

То же самое относится и к Typescript, angular в значительной степени зависит от этого, в частности, от декораторов, он не может работать с простым JS.

Вы также используете неправильный термин здесь (по крайней мере, с точки зрения Angular), есть что-то, называемое функциональным программированием, в ОЧЕНЬ простых терминах это в основном означает, что вы избегаете императивного кода, такого как for(let i=0; i< array.length; i++), для более функционального подхода, такого как array.forEach.

Если вам интересно, вы можете узнать больше о функциональном программировании в Angular в этом посте среднего уровня: Функциональное программирование простыми словами

Я также хотел бы добавить, что React начинался со стандартных компонентов класса, а функциональные компоненты можно было использовать для более простых элементов. Теперь, особенно с добавлением хуков и внутренних улучшений производительности, я считаю, что они пытаются сделать функциональные компоненты стандартом (что мне, честно говоря, нравится). В общем, я предполагаю, что в будущем у реакции будут только функциональные компоненты, а классовые можно будет увидеть только в унаследованном коде. Так что функциональные компоненты — это что-то вроде реакции, насколько я могу судить, их нет даже у Vue.

Dario Piotrowicz 25.12.2020 12:06

да, извините за длинный комментарий, я просто хотел упомянуть, что я считаю, что функциональные компоненты — это довольно специфическая функция реагирования, поэтому вам не следует ожидать, что вы увидите их где-то еще.

Dario Piotrowicz 25.12.2020 12:07

Что касается Typescript, то именно так был построен Angular, и он является неотъемлемой частью фреймворка, но React и Vue также предлагают поддержку TS. TS становится все более популярным и распространенным, поэтому я думаю, что вам не следует избегать его, а просто воспользуйтесь этой возможностью, чтобы изучить его, так как он все равно вам пригодится в будущем :)

Dario Piotrowicz 25.12.2020 12:10

разве вы не хотели написать «императивное» вместо «декларативное»?

hesxenon 10.03.2022 10:03

Использование цикла for «не работает»? Я думал, что функциональное программирование просто означает, что вы полагаетесь на (чистые и неизменяемые) функции для повторного использования кода, а не на классы и наследование.

Shachar Har-Shuv 21.11.2022 19:59

@ShacharHar-Shuv Определение функционального программирования, на мой взгляд, не полностью определено, и разные люди могут иметь немного разные представления о том, что это значит, с моей точки зрения, я бы определенно сказал, что циклы «for» являются типичными императивными операциями, пока forEach используется функциональный подход. Чтобы получить больше информации о разнице, загляните сюда: learn.microsoft.com/en-us/dotnet/standard/linq/…

Dario Piotrowicz 22.11.2022 12:48

в моей предыдущей ссылке я думаю, что следующее предложение довольно хорошо резюмирует аргумент: «При императивном подходе разработчик пишет код, который определяет шаги, которые компьютер должен предпринять для достижения цели. Это иногда называют алгоритмическим программированием. Напротив, функциональный подход предполагает составление проблемы как набора функций, которые необходимо выполнить». (и в нашем случае вы можете видеть, что это указывает на разницу в указании js выполнять итерацию через поиск for по сравнению с составом функции forEach с ее аргументом)

Dario Piotrowicz 22.11.2022 12:52

Я просто хочу добавить, что .forEach часто используется как пример «функционального подхода». forEach хорош только для побочных эффектов, что означает, что на самом деле это очень плохой пример, поскольку вы пытаетесь изолировать побочные эффекты и сохранить их в как можно меньшем количестве мест. Лучшим примером является цикл for с Array.push и простой Array.map.

pfeileon 11.01.2023 08:31

В npm есть библиотека под названием angular-function-component. Хотя это всего лишь функциональная оболочка для компонента класса. И да, Angular, похоже, использует в основном ООП-подход.

https://www.npmjs.com/package/angular-function-component

Раньше я работал со старым AngularJS, но недавно у меня появилась возможность снова посетить Angular. Судя по их объявлению Component, функциональное программирование, вероятно, не рекомендуется.

import { Component } from '@angular/core';

@Component({
  selector: 'app-root',
  templateUrl: './app.component.html',
  styleUrls: ['./app.component.scss']
})
export class AppComponent {
  title = 'learn-angular';
}

Вышеупомянутый класс является производным от базы Component, но это класс. Это заставило меня подумать, что он также не будет поддерживать хуки. Я имею в виду хук React, а не сервисный хук.

Конечно, поддержка функционального программирования Javascript все еще существует, что не имеет ничего общего с Angular, например, arr.map.

Другие вопросы по теме