Size: a a a

Angular - русскоговорящее сообщество

2020 January 06

D

Dolgovec in Angular - русскоговорящее сообщество
Берешь расширение файла и в зависимости от него отображаешь нужные иконки. Для картинок можешь через FileReader() в base64 конвертнуть и вывести
Andrii
источник

D

Dolgovec in Angular - русскоговорящее сообщество
У ангуляра из коробки нет чего-то отличающегося от обычного js, ивент такой же (change)="onSelectFile($event)"
источник

VB

Valentin Buryakov in Angular - русскоговорящее сообщество
Dolgovec
Привет. Я наверно чего-то не понимаю в тестах. У меня в компоненте есть на OnInit() вызов функции из сервиса, в самом сервисе идет вызов MatSnackBar. Вопрос: если я мокаю этот сервис, то он идет пустой и метод .open() у снекбара не вызывается. И что с этим делать?
В тестах тебе и не нужен вызов этого snackBar, ты ж тестируешь именно компонент, а не сервис. В компоненте достаточно проверить что вызвался метод сервиса с нужными параметрами.  Это уже для е2е тестов важно что все остальное работает, а для юнит нам пофиг вообще на остальные вложенные зависимости
источник

D

Dolgovec in Angular - русскоговорящее сообщество
@valburyakov да, я к этому уже сам пришел, мокаю только сервисы и отслеживаю вызов в нем. Спасибо за ответ
источник

ЕУ

Евгений Удалов in Angular - русскоговорящее сообщество
Денис Макаров
https://v6.angular.io/guide/styleguide#interfaces
еще в 6 версии ангуляра появилась рекомендация не использовать I в именах интерфейсов
Лучше вообще не использовать префиксы или постфиксы в названий интерфейсов
исключительно вкусовщина. зависит от стайлгайда конкретной команды
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
Евгений Удалов
исключительно вкусовщина. зависит от стайлгайда конкретной команды
с этим я согласен
но тенденция такова, что со временем все начинают уходить от префиксов. Префиксы появились в венгерской нотации, когда еще не было крутых IDE, которые могли сказать нам о типе данных. Названия переменных и сущностей в первую очередь должны отражать то, для чего они были определены. А засилие префиксов и постфиксов только осложняет чтение и отвлекает от деталей(сошлусь на "Чистый код")
источник

ЕУ

Евгений Удалов in Angular - русскоговорящее сообщество
Денис Макаров
с этим я согласен
но тенденция такова, что со временем все начинают уходить от префиксов. Префиксы появились в венгерской нотации, когда еще не было крутых IDE, которые могли сказать нам о типе данных. Названия переменных и сущностей в первую очередь должны отражать то, для чего они были определены. А засилие префиксов и постфиксов только осложняет чтение и отвлекает от деталей(сошлусь на "Чистый код")
ну так-то согласен. если интерфейсы с префиксом I, то почему enam без Е ))
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
Евгений Удалов
ну так-то согласен. если интерфейсы с префиксом I, то почему enam без Е ))
ед с чем я согласен, это постфиксы ввиде Component, Service и тд. Так как они создаются для избегания коллизий имен, чтобы User компонент и User сервис могли сосуществовать в одном namespace
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
ну и еще _ в приватных членах данных в языках с дин типизацией, где нет возможности сокрыть реализацию
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
Денис Макаров
с этим я согласен
но тенденция такова, что со временем все начинают уходить от префиксов. Префиксы появились в венгерской нотации, когда еще не было крутых IDE, которые могли сказать нам о типе данных. Названия переменных и сущностей в первую очередь должны отражать то, для чего они были определены. А засилие префиксов и постфиксов только осложняет чтение и отвлекает от деталей(сошлусь на "Чистый код")
у интерфейса ставят I, чтобы при создании класса, его реализующего, различать их
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
вполне нормальный подход
источник

AH

Avetik Harutyunyan in Angular - русскоговорящее сообщество
Yuri Stepanov
у интерфейса ставят I, чтобы при создании класса, его реализующего, различать их
интерфейс же должен быть более абстрактным, а класс - уже конкретная реализация, соответственно названия не должны совпадать. Например интерфейс - Door, класс - WoodenDoor
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
Yuri Stepanov
у интерфейса ставят I, чтобы при создании класса, его реализующего, различать их
интерфейсы обычно более абстрактны, чем классы, которые их реализовывают
например есть интерфейс Iterator, а реализация может быть как EvenIterator или OddIterator
Нет смысла реализовать интерфейс и класс с одним и тем же названием
И конкретно к тс, В тс можно делать так:
class A (public b: string) {}
const a1 = new A('a1');
const a2: A = { b: 'a2' }; - тогда вопрос, какой префикс ставить у класса A?
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
Avetik Harutyunyan
интерфейс же должен быть более абстрактным, а класс - уже конкретная реализация, соответственно названия не должны совпадать. Например интерфейс - Door, класс - WoodenDoor
+
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
Денис Макаров
интерфейсы обычно более абстрактны, чем классы, которые их реализовывают
например есть интерфейс Iterator, а реализация может быть как EvenIterator или OddIterator
Нет смысла реализовать интерфейс и класс с одним и тем же названием
И конкретно к тс, В тс можно делать так:
class A (public b: string) {}
const a1 = new A('a1');
const a2: A = { b: 'a2' }; - тогда вопрос, какой префикс ставить у класса A?
Использовать класс в качестве типа законно, никакого префикса не надо, это же не интерфейс:)
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
а про абстрактность интерфейсов кто это сказал?:)
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
лол, интерфейсы по своей природе - это абстракция
источник

ДМ

Денис Макаров in Angular - русскоговорящее сообщество
это некий контракт, который обязан соблюдать тот, кто реализует интерфейс
у интерфейса не может быть реализации
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
interface queryParamsI, class queryParams impelements queryParamsI
источник

YS

Yuri Stepanov in Angular - русскоговорящее сообщество
Денис Макаров
это некий контракт, который обязан соблюдать тот, кто реализует интерфейс
у интерфейса не может быть реализации
это понятно :)
источник