@typescript_ru

Страница 354 из 669
Alexandra
15.09.2017
15:04:53
Олег, можно сделать такой хак: interface BaseHtmlComponentProps { onBlur: (e: Event) => void; } export interface ReplacedProps extends BaseHtmlComponentProps { onBlur: any } interface ComponenetProps extends ReplacedProps { onBlur: (value:string, e: Event)=>void }

andretshurotshka?❄️кде
15.09.2017
15:05:28
жесть

Alexandra
15.09.2017
15:05:43
прослойка с any)

andretshurotshka?❄️кде
15.09.2017
15:05:53
кидаю вариант на type, нет надо хакнуть)

Google
Вертихвост
15.09.2017
15:06:37
interface BaseHtmlComponentProps{ onBlur: (e: Event) => void; } interface ComponenetProps extends BaseHtmlComponentProps{ onBlur: (value:string, e: Event)=>void } вот так экстендить нельзя, тайпскрипт ругается
Реализуйте во втором интерфейсе первый interface ComponenetProps extends BaseHtmlComponentProps{ onBlur: (e: Event) => void; onBlur: (value:string, e: Event)=>void }

andretshurotshka?❄️кде
15.09.2017
15:07:04
я просто Event сделал через as

Олег
15.09.2017
15:07:24
а можно просто добавить второй аргумент в базовый интверфейс

и не велосипедить

Sergey
15.09.2017
15:07:32
ну ты перегруженую функцию вызываешь с сигнатурой исходной

втф как бы

Вертихвост
15.09.2017
15:08:03
Oleg
15.09.2017
15:08:58
пока самое чистое - отказаться от наследования

andretshurotshka?❄️кде
15.09.2017
15:09:00
Google
Sergey
15.09.2017
15:09:55
Сергей
15.09.2017
15:10:13
наследование — гиблое дело

Дмитрий
15.09.2017
15:10:26
Не гиблое

Олег
15.09.2017
15:10:38
гиблое дело, видя ошибку не исправлять ее

а искать пути обхода

Дмитрий
15.09.2017
15:10:45
Просто здесь пытаются добавить телеге пятое колесо

Здесь нет наследования как такового, это два равноправных интерфейса, разных

Олег
15.09.2017
15:11:33
стоило хотя бы задуматься "почему мне это не разрешают"

Дмитрий
15.09.2017
15:11:41
Что человек дал — по тому и сужу

По данным интерфейсам видно что отражают они одну идею, но наследования между ними никакого нет

Вертихвост
15.09.2017
15:12:26
Что человек дал — по тому и сужу
Я поясню свою позицию, меня такой подход тоже не очень радует

Eugene
15.09.2017
15:13:14
type мощнее, хз зачем интерфейсы нужны
Типы не умеют в мерж описаний

Вертихвост
15.09.2017
15:14:18
type мощнее, хз зачем интерфейсы нужны
type нужно применять там, где они нужны по смыслу

Максим
15.09.2017
15:15:57
interface ComponenetProps extends BaseHtmlComponentProps{ onBlur: (e: Event) => void; onBlur: (value:string, e: Event)=>void } пишет дупликейт идентифаер )

короче я пока нашел способ только через прослойку с any

остальные предложенные порождают ошибки компиляции(

andretshurotshka?❄️кде
15.09.2017
15:17:06
Вертихвост
15.09.2017
15:17:58
interface ComponenetProps extends BaseHtmlComponentProps{ onBlur: (e: Event) => void; onBlur: (value:string, e: Event)=>void } пишет дупликейт идентифаер )
interface BaseHtmlComponentProps { onBlur(e: Event): void; } interface ComponenetProps extends BaseHtmlComponentProps { onBlur(e: Event): void; onBlur(value: string, e: Event): void; }

Google
Вертихвост
15.09.2017
15:18:40
а так?

Максим
15.09.2017
15:18:56
а так работает...

andretshurotshka?❄️кде
15.09.2017
15:19:38
Максим
15.09.2017
15:19:39
а ведь тоже на хак смахивает

Вертихвост
15.09.2017
15:19:59
везде нужны
не везде

andretshurotshka?❄️кде
15.09.2017
15:20:08
не везде
где не нужны?

Вертихвост
15.09.2017
15:20:17
а ведь тоже на хак смахивает
и есть хак, я пока не особо понимаю зачем, так как нет контекста

где не нужны?
там где описывается структура, как минимум

Eugene
15.09.2017
15:21:23
это что
https://www.typescriptlang.org/docs/handbook/declaration-merging.html

andretshurotshka?❄️кде
15.09.2017
15:21:26
А

Понял

Ну ок, единственный кейс)

Максим
15.09.2017
15:23:07
и есть хак, я пока не особо понимаю зачем, так как нет контекста
да есть компонент реактовый пропсы которого экстендят стандартные html-ные от, например, input-а но вот onBlur ему нужен другого типа не как в input-е никак не мог нормально заоверрайдить

Вертихвост
15.09.2017
15:23:15
Ну ок, единственный кейс)
interface Animal { name: string; } type Animals = Animal[];

andretshurotshka?❄️кде
15.09.2017
15:23:45
Google
Вертихвост
15.09.2017
15:26:20
https://www.typescriptlang.org/docs/handbook/advanced-types.html One difference is that interfaces create a new name that is used everywhere. Type aliases don’t create a new name — for instance, error messages won’t use the alias name. A second more important difference is that type aliases cannot be extended or implemented from (nor can they extend/implement other types). Because an ideal property of software is being open to extension, you should always use an interface over a type alias if possible.

andretshurotshka?❄️кде
15.09.2017
15:26:45
Второе уже не актуально

И зачем мне смотреть на имя типа, когда структура важнее

В подсказках вскода etc

Eugene
15.09.2017
15:27:14
type мощнее, хз зачем интерфейсы нужны
Интерфейсы для наследования и структур, типы для алиасов и mapped types

Вертихвост
15.09.2017
15:27:30
Второе уже не актуально
можно сделать type A = ... type B extends A = ... ?

andretshurotshka?❄️кде
15.09.2017
15:27:38
type B = {} class A implements B {}

Вертихвост
15.09.2017
15:28:17
type B = {} class A implements B {}
речь про расширение

andretshurotshka?❄️кде
15.09.2017
15:28:35
type A = B & {}

Вертихвост
15.09.2017
15:28:54
type A = B & {}
опять таки, больше на хак похоже

andretshurotshka?❄️кде
15.09.2017
15:29:00
Не похоже

Вертихвост
15.09.2017
15:29:12
Потому что он и есть)

Ivan
15.09.2017
15:29:16
не хак, мы это во всю используем ;)

Вертихвост
15.09.2017
15:29:28
Ivan
15.09.2017
15:29:29
class Fake {} ... потом & с ним

andretshurotshka?❄️кде
15.09.2017
15:30:15
А & для типов обычных ок

Вертихвост
15.09.2017
15:30:50
А & для типов обычных ок
Да, но не там где можно использовать интерфейсы

Google
Aleh
15.09.2017
15:47:57
С новым именем уже не совсем так

А второй абзац совсем ни о чем, ведь типы можно расширять

А ocp вообще не про это Оо

Вертихвост
15.09.2017
15:49:02
там по ссылке есть же примеры

Aleh
15.09.2017
15:49:30
.
Мы тут не пикасо обсуждаем

Vasiliy
16.09.2017
09:39:04
думаю дальше про монорепки: дано: монорепа с пакетами, хочется писать нормальные интеграционные тесты (т.е. кросс-пакетные) задача: (цитата): While integration tests are now easier, they still have a major issue: packages requiring other packages (after npm linking them) will use their main entry point specified in the package.json, which will point to the compiled dist/ directory in the case you use a build step. This is super awkward: these files are meant for consumers, not for your tests. Running tests in watch mode while changing code of multiple packages now implies that some tsc watch task would have to continuously compile those dist/ directories. Additionally, you’ll probably want to test the src/ files when testing a package directly. So you actually have two simultaneous sources of truth: src/ for tests that directly import the package, dist/ for indirect imports. Maybe I’m not seeing something, but this sounds like a mess. :) возможно, как-то в тестовом окружении можно подменять импорты, чтобы использовать код из src/ кто-то еще думал над этой проблемой? как вы решаете ее у себя в проекте?

Mike
16.09.2017
09:47:25
я всё подрубаю исходниками

т.е. у нас весь фреймвёрк лежит в той же папке что и проект(пока просто лежит, потом на сабрепу уедет) также у меня там же сабрепой лежит билд кастомного ts. Ну и как я писал выше куча ts файлов на каждый таргет

Vasiliy
16.09.2017
09:52:29
я всё подрубаю исходниками
спасибо, да, я так не смогу сделать( буду думать в сторону того, чтобы подменять импорты, чтобы они указывали на src/ в тестовом окружении и гуглить/гитхабить конечно же :) для jest, например, можно препроцессор мутануть, который это сделает

кстати, от ms есть какая-то штука для монореп https://github.com/Microsoft/web-build-tools/blob/master/apps/rush/README.md, не пробовал, только увидел, они ее для шейрпоинта (о ужас) делали

Mike
16.09.2017
10:20:13
Новая гифка про diving into javascript https://cs6.pikabu.ru/post_img/2017/09/16/4/1505534468181426494.gif

Дмитрий
16.09.2017
10:20:51
Я так и не понял, что за проблема у тебя с монорепами

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