
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:05:56

Oleg
15.09.2017
15:06:23

Вертихвост
15.09.2017
15:06:37

Sergey
15.09.2017
15:06:56

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

Вертихвост
15.09.2017
15:09:26

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:24

Олег
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

Вертихвост
15.09.2017
15:14:18

Максим
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

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

Вертихвост
15.09.2017
15:23:15

andretshurotshka?❄️кде
15.09.2017
15:23:45

Вертихвост
15.09.2017
15:23:48

andretshurotshka?❄️кде
15.09.2017
15:24:34
Нужны спреды, когда уже смержат Spread type от sandersn

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

Вертихвост
15.09.2017
15:27:30

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

Вертихвост
15.09.2017
15:28:17

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

Вертихвост
15.09.2017
15:28:54

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

Aleh
15.09.2017
15:47:05

Google

Вертихвост
15.09.2017
15:47:27

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
Я так и не понял, что за проблема у тебя с монорепами