@typescript_ru

Страница 553 из 669
Dmitry
23.03.2018
07:05:10
Всем привет. Друзья, подскажите пожалуйста почему не рекомендуется именовать интерфейсы с префиксом I?

Дмитрий
23.03.2018
07:11:55
Потому что это не несёт абсолютно никакого профита

Эта странная необходимость вызвана лишь тем что тс не различает импорт типов и объектов и первые захотелось выделить хоть как-то

Но это всё равно в такой форме не работает

Google
Alex
23.03.2018
07:16:39
Но это всё равно в такой форме не работает
А чисто визуально понимать тип объекта это или интерфейс ?

Дмитрий
23.03.2018
07:16:58
Да, но это днище же

Евгений
23.03.2018
07:17:37
Да, но это днище же
Что вы такое вообще несёте?

Дмитрий
23.03.2018
07:17:50
Традиция тянется откуда то с до диеза

Alex
23.03.2018
07:19:02
+ можно создать интерфейс ICircle и реализацию Circle + когда начинаешь писать имя интерфейса для реализации в классе в подсказке будут только интерфейсы?

Дмитрий
23.03.2018
07:19:41
Зачем мне в подсказке ВСЕ интерфейсы?

Не релевантные от слова вообще

Alex
23.03.2018
07:20:07
Не релевантные от слова вообще
А зачем в подсказке классы когда нужен интерфейс?

Дмитрий
23.03.2018
07:20:12
Лол

Dmitry
23.03.2018
07:20:33
Обозначайте через I это best practices
Здесь https://angular.io/guide/styleguide#interfaces говорится что так делать не надо, со ссылкой сюда - https://github.com/Microsoft/TypeScript/wiki/Coding-guidelines

А там просто сказано что это плохо и всё

Дмитрий
23.03.2018
07:20:41
Код должен быть связан по смыслу, в том числе семантически

Google
Alex
23.03.2018
07:20:46
Зачем мне в подсказке ВСЕ интерфейсы?
Имел в виду когда выводит с минимум двух букв типа IC

Maxim
23.03.2018
07:20:46
Так идёт поиск по тому что ты вводишь а не по тому что ты подумал

Dmitry
23.03.2018
07:20:47
Хотя в имени очевидно что это интерфейс.

Дмитрий
23.03.2018
07:21:07
Dmitry
23.03.2018
07:21:39
Это и есть днище
Очевидность того что ты работаешь с интрфейсом - есть днище?

Чем плохо IHero или HeroInterface?

Дмитрий
23.03.2018
07:21:58
Да

Эта странная необходимость вызвана лишь тем что тс не различает импорт типов и объектов и первые захотелось выделить хоть как-то

То что нет import type это и есть дно

Dmitry
23.03.2018
07:22:47
Но программисту то что делать?

Alex
23.03.2018
07:22:50
А при чем тут тс, это общая практика для многих языков

Дмитрий
23.03.2018
07:23:11
И это не повод форсить уродливый нейминг

Dmitry
23.03.2018
07:23:19
Нужно же как-то обозначить интерфейс, иначе может быть банально конфликт имён с классом или тем что он должен декларировать.

Дмитрий
23.03.2018
07:23:38
А давайте все переменные называть с V

А классы с C

А чо нет то

Dmitry
23.03.2018
07:24:09
Ок.

Дмитрий
23.03.2018
07:24:15
ЗАТО ПОНЯТНО ВСЕ ПОДСКАЗКИ ЕСТЬ

Google
Дмитрий
23.03.2018
07:24:19
и убрать эти var let и const, они не нужны

Дмитрий
23.03.2018
07:24:29
Во во)

Дмитрий
23.03.2018
07:24:35
Dmitry
23.03.2018
07:24:38
Объясни как ты назовёшь интерфейс для класса Hero?

Дмитрий
23.03.2018
07:24:51
Hero

Я не буду плодить сущности

Dmitry
23.03.2018
07:25:05
А конфликта не будет?)

Alex
23.03.2018
07:25:06
Конкуренция названия?

Дмитрий
23.03.2018
07:25:07
Объясни как ты назовёшь интерфейс для класса Hero?
Зачем вообще для класса интерфейсы делать?

Дмитрий
23.03.2018
07:25:14
Во во

Alex
23.03.2018
07:25:26
Кек

Дмитрий
23.03.2018
07:25:33
Dmitry
23.03.2018
07:25:37
Зачем вообще для класса интерфейсы делать?
Не для класса. Для объекта, аргумента ф-ции. Чего цепляться к словам?

Дмитрий
23.03.2018
07:25:52
Потому что это важно

Дмитрий
23.03.2018
07:26:06
Ну как бы да, это абсолютно разные вещи)

Maxim
23.03.2018
07:26:19
Вообще тут дело в том что впринципе насрать как называть. Как скажут сверху так и пиши. Но вот какого куя нельзя назвать i я так и не понял. А если у меня слово на i начинается

Евгений
23.03.2018
07:26:28
А там просто сказано что это плохо и всё
Это просто опечатка, но в принципе интерфейсы в подавляющем большинстве случаев не нужны, пишите на классах

Тимофей
23.03.2018
07:28:31
То что нет import type это и есть дно
он же различает, если импорт используется только как тип то он дропается. Или я что то путаю?

Дмитрий
23.03.2018
07:28:43
Да и вообще это не дно, это норм, как по мне))

Google
Тимофей
23.03.2018
07:29:17
Да и вообще это не дно, это норм, как по мне))
мне тоже кажется отдельный импорт для типов нинужен

Дмитрий
23.03.2018
07:29:18
Почему вообще я должен с чего-то вдруг еще указывать что именно я импортирую

пусть тогда были бы import const, import сlass

абсурд же

Alex
23.03.2018
07:29:58
У меня есть интерфейс и два класса которые реализуют его по разному, т.к. Я использую интерфейс для обозначения типов переменных и аргументов функций у меня нет привязки кода к конкретным пеализациям, а рефпкторинг охватывает все реализации

Alex
23.03.2018
07:32:38
Затем, что мне не нужна привязка к реализации, я хочу иметь возможность использовать разные реализации без изменения кода

Дмитрий
23.03.2018
07:32:58
Абстрактный класс?

Евгений
23.03.2018
07:33:57
зачем интерфейс? почему не сделать абстрактный класс
В Js вообще этого ни чего не будет, останутся лишь классы, тогда зачем такой надрыв? Правильно - незачем, пишите почти все на классах

Дмитрий
23.03.2018
07:35:45
Нет,наоборот абстрактные классы нужны крайне редко, интерфейсы и то чаще

Alex
23.03.2018
07:35:48
Абстрактный класс?
Абстрактный класс может иметь реализации, опять же повторяю, я хочу этого избежать

Alex
23.03.2018
07:36:34
И да как сказано выше, назначение у абстрактных классов другое

Но ведь может и не иметь
Если нет не одной реализации то какой смысл в абстрактном классе? Получается интерфейс, не? Или я что-то не понимаю

Dmitry
23.03.2018
07:37:47
В общем друзья я понял мысль. Проверил, действительно конфликтов имён не может быть.

По этому вполне разумно.

Евгений
23.03.2018
07:39:40
В общем друзья я понял мысль. Проверил, действительно конфликтов имён не может быть.
Так сразу было сказано, что конфликтов не будет, это просто бест практикс из др языков

Google
Dmitry
23.03.2018
07:40:01
В плане?
Ну здесь же был троллинг по поводу глупости обозначения в имени интерфейса что это интерфейс. Мол а давайте и переменные именовать с префиксами. Вот да, я думал имена будут конфликтовать. Если нет, тогда всё отлично.

Alex
23.03.2018
07:41:18
Если в одном файле есть импорт и класса и интерфейса с одинаковым названием Box, при объявлении переменной типа Box не будет конфликта?

Alex
23.03.2018
07:50:29
Воспроизведи если есть время. Самому интересно.
Сейчас нет возможности, но я думаю конфликт будет уже на стадии импорта

Dmitry
23.03.2018
07:52:53
Duplicate identifier 'A'.

Если что-то импортнуть а что-то объявить, тогда не бдует конфликтов.

А если попытаться импортировать 2 сущности с одинаковыми именами, то разумеется будет конфликт и это логично.

Kirill
23.03.2018
08:15:07
Можно ли сейчас как-то настроить ts/tslint, чтобы неиспользуемые переменные подсвечивались в vscode, но не прерывали компиляцию?

Укажи тип у одной интерполяции
А тип для темы как указывать чтобы подхватывалось после одной интерполяции? Добавил в тип пропсов поле theme (по сути повторил вручную тип ThemedStyledProps) с типизацией для темы и вторая интерполяция не подхватывает тип пропсов.

Дмитрий
23.03.2018
09:28:42
Типизируются SC всё же отстойно, фактически никак

То что они называют "Caveat" это банально огромная проблема их подхода самого по себе

Тимофей
23.03.2018
09:30:56
Типизируются SC всё же отстойно, фактически никак
не идеально, но если разобраться то нормально

Дмитрий
23.03.2018
09:31:15
Далеко от идеала

Потому что template literal functions это совершенно особый кейс в жс со своим типом, что накладывает ограничения и вызывает проблемы само по себе, как ни крути

С этим можно жить, но это по прежнему отстойно и такие вещи замалчивать нельзя)

Тимофей
23.03.2018
09:32:23
Далеко от идеала
какие проблемы например? может я с ними еще не встречался.

Дмитрий
23.03.2018
09:33:24
Глава Caveat with Stateless Components вкратце формулируется как "наши компоненты не имеют вывода типов от слова вообще, deal with it"

Страница 553 из 669