
Дмитрий
01.12.2017
09:53:32
Какую проблему ты решаешь гетом

Andrey
01.12.2017
09:53:49
Вот у меня желания такую хрень совершенно нет парсить.

Google

Дмитрий
01.12.2017
09:54:05
Это пиздец

Andrey
01.12.2017
09:54:34
Ну, у меня была одна ситуация, когда эта хрень понадобилась.
А так да, это пиздец.

Дмитрий
01.12.2017
09:56:30
Защита от типизации кода

Алексей
01.12.2017
09:57:06
И вообще функции-дженерики вам на что?

Дмитрий
01.12.2017
09:58:08
Это не случай для них

Andrey
01.12.2017
09:58:39

Алексей
01.12.2017
10:07:14

Дмитрий
01.12.2017
10:07:58
Как написать any со сложными щщами и не подать виду

Karl
01.12.2017
10:18:09

Google

Golodnyi
01.12.2017
10:19:07
а для get только undef считается пустым значением? Конструкция в целом неудачная
хотя обычно в проектах столько говнокода, что это мелочи

Karl
01.12.2017
10:21:00
я вот ща в легаси копаюсь tslint фикшу

Алексей
01.12.2017
10:23:37

Дмитрий
01.12.2017
10:24:45
"Я не потерял тип, я динамически типизировал"

Aleh
01.12.2017
10:24:49
и баг - динамическая типизация там, где она не нужна(

Алексей
01.12.2017
10:26:01

Дмитрий
01.12.2017
10:26:52
Полсе того как тс опять динамически типизировал втихую — разумеется

Karl
01.12.2017
10:29:16
const title = gameMetaData.title || defaultTitle;
короч сделал так, имхо бест вариант, но чет так и не понял как тайпскрипт тут побороть

Max
01.12.2017
10:29:27
можно ли как-то опционально сделать метод, который бы работал
this.state.get<MyModel>(State.MyModel);
так и this.state.get(State.MyModel);
?
сейчас приходится указывать тип, а хотелось бы опционально

Алексей
01.12.2017
10:30:51

Aleh
01.12.2017
10:30:53

Дмитрий
01.12.2017
10:33:43

Алексей
01.12.2017
10:38:06

Дмитрий
01.12.2017
10:38:18
И это не дженерик

Алексей
01.12.2017
10:39:14
А дженерик - это фактически просто чуть более красивый any

Google

Aleh
01.12.2017
10:39:31
…

Алексей
01.12.2017
10:39:33
Опять же без проверок в рантайме

Morsik
01.12.2017
10:39:39
Дженерик это не any
Всмысле он дает больше чем просто красоту

Алексей
01.12.2017
10:42:00

Morsik
01.12.2017
10:42:34
Ну такими темпами дойдемдо того что твйпскипт дает только красоту

Дмитрий
01.12.2017
10:43:09
Дженерики для красоты ето сильно

Aleh
01.12.2017
10:43:28
я тоже считаю, что дженерики это красиво
как jsx

Дмитрий
01.12.2017
10:43:52
Такая своего рода гирлянда, чтобы открывал код и обретал праздничное, нарядное настроение
— Зачем вы используете дженерики?
— Ну во-первых, это красиво...

Karl
01.12.2017
10:47:30
кто нить может скинуть где почитать как дженерики работают?

Karl
01.12.2017
10:47:49
не в плане доки, а как они внутри устроены

Алексей
01.12.2017
10:50:09
Я вообще о том, что никаких дженериков в JS коде нет, да и ts типов тоже. И проверок типов тоже нет. И если дженерик get параметризирован number, то не факт, что в результате он действительно число вернет.

Aleh
01.12.2017
10:51:07
ну если вы специально не обманываете тайпчекер(кастуете any к произвольному типу) где-то, то факт

Алексей
01.12.2017
10:52:29

Aleh
01.12.2017
10:52:40
в случае тс тайпчекер не снимает необходимости валидировать данные внешнего мира

Алексей
01.12.2017
10:53:05

Aleh
01.12.2017
10:53:20
например g(g(object, ‘a’), ‘b’) или потом g(object, “a”, “b”)

Google

Aleh
01.12.2017
10:54:06
проверять типы есть смысл только для данных из внешнего мира

Алексей
01.12.2017
10:54:11

Дмитрий
01.12.2017
10:56:29

Алексей
01.12.2017
10:57:10

Aleh
01.12.2017
10:57:22
а как будет выглядеть сигнатура такой функции в TS?
https://www.typescriptlang.org/play/index.html#src=declare%20function%20get%3CO%2C%20P%20extends%20keyof%20O%3E(o%3A%20O%2C%20p%3A%20P)%3A%20O%5BP%5D%0Adeclare%20function%20get%3CO%2C%20P1%20extends%20keyof%20O%2C%20P2%20extends%20keyof%20O%5BP1%5D%3E(o%3A%20O%2C%20p1%3A%20P1%2C%20p2%3A%20P2)%3A%20O%5BP1%5D%5BP2%5D%0A%0Aconst%20a%20%3D%20%7B%0A%20%20%20%20a%3A%20%7B%0A%20%20%20%20%20%20%20%20b%3A%205%0A%20%20%20%20%7D%0A%7D%0Aconst%20b%20%3D%20get(a%2C%20%22a%22%2C%20%22b%22)

Алексей
01.12.2017
10:59:18

Aleh
01.12.2017
10:59:51
ну очевидно да

Дмитрий
01.12.2017
11:00:11
В тайпскрипте — да

Aleh
01.12.2017
11:00:32
ну очевидно да
если конечно вы не проверите строку на соответствие ключам объектов

Admin
ERROR: S client not available

Алексей
01.12.2017
11:00:38

Aleh
01.12.2017
11:00:48
т.е. если не докажите, что они являются keyof

Karl
01.12.2017
11:01:16
я правильно понимаю, что
const tabs: Array<React.ReactElement<ITabProps>> = [];
тоже самое что
const tabs: React.ReactElement<ITabProps>[] = [];
?

Aleh
01.12.2017
11:01:29

Дмитрий
01.12.2017
11:02:21
Душа требует гирлянд

Алексей
01.12.2017
11:03:05

Aleh
01.12.2017
11:04:02
есть подозрение, что это опять какие-то данные из внешнего мира, которые да, надо валидировать и это никак не влияет на то, что все типизируется нормально)

Алексей
01.12.2017
11:07:47

Aleh
01.12.2017
11:08:11
так, а что вы провалидировали?

Дмитрий
01.12.2017
11:08:38
Это кстати не означает что это в принципе невозможно статически типизировать

Google

Aleh
01.12.2017
11:09:15
тип объекта и тип строки, что он соответствует какому-то пути в объекте? Тогда как я показал выше, в тс можно описать тип операции, в системах типов получше можно описать это еще лучше

Karl
01.12.2017
11:10:36

Алексей
01.12.2017
11:10:36

Aleh
01.12.2017
11:11:04
про сигнатуру не понял
Array<A> и A[] это одно и тоже

Алексей
01.12.2017
11:12:17

Aleh
01.12.2017
11:12:44
ну да

Алексей
01.12.2017
11:12:50
вот только это не всегда возможно, так как get скорее всего вообще в чужой либе лежит

Aleh
01.12.2017
11:13:02
ну еще eval особо не типизируешь

Алексей
01.12.2017
11:13:22
и JSON.parse

Aleh
01.12.2017
11:13:40
да, это все работа с внешним миром, нужно валидировать
или зависимые типы искать

Дмитрий
01.12.2017
11:14:10
Лёл
http://kcsongor.github.io/purescript-safe-printf/

Алексей
01.12.2017
11:14:20

Дмитрий
01.12.2017
11:14:39

Aleh
01.12.2017
11:14:44

Алексей
01.12.2017
11:15:22

Дмитрий
01.12.2017
11:15:29
:t format @"Wurble %d %d %s"
Int -> Int -> String -> String

Алексей
01.12.2017
11:15:34
хотя это всё редкие вещи на саомм деле

Aleh
01.12.2017
11:16:25