
sne18
13.05.2017
18:20:27
А

Vladimir
13.05.2017
18:21:54

Сергей
13.05.2017
18:33:34

Дмитрий
13.05.2017
18:35:56
Ето пёс

Google

Vladimir
13.05.2017
18:40:16
Это "как настроить его принудительно перед коммитом"

Aleh
14.05.2017
00:43:23
https://github.com/babel/babylon/pull/523
вроде хотят в 7.0 как экспериментальную фичу добавить


Юрий
14.05.2017
05:54:43
Всем привет. Наткнулся на занимательный момент:
http://www.typescriptlang.org/play/index.html#src=class%20UserId%20%7B%0D%0A%20%20%20%20value%3A%20String%0D%0A%20%20%20%20constructor(str%3A%20String)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.value%20%3D%20str%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aclass%20Password%20%7B%0D%0A%20%20%20%20value%3A%20String%0D%0A%20%20%20%20constructor(str%3A%20String)%20%7B%0D%0A%20%20%20%20%20%20%20%20this.value%20%3D%20str%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Aconst%20userId%20%3D%20new%20UserId(%2216c8bde9-7c3a-400d-aead-bfec582b7103%22)%0D%0Aconst%20password%20%3D%20new%20Password(%221q2w3e4r5t%22)%0D%0A%0D%0Afunction%20updateUserPassword(userId%3A%20UserId%2C%20password%3A%20Password)%3A%20Promise%3Cvoid%3E%20%7B%0D%0A%20%20%20%20return%20Promise.resolve()%20%2F%2F%20implementation%0D%0A%7D%0D%0A%0D%0AupdateUserPassword(password%2C%20userId)%20%2F%2F%20%D0%BF%D0%BE%D1%87%D0%B5%D0%BC%D1%83%20%D1%82%D1%83%D1%82%20%D0%BD%D0%B5%20%D1%80%D1%83%D0%B3%D0%B0%D0%B5%D1%82%D1%81%D1%8F%20%D0%BA%D0%BE%D0%BC%D0%BF%D0%B8%D0%BB%D1%8F%D1%82%D0%BE%D1%80%3F%0D%0AupdateUserPassword(userId%2C%20password)%0D%0A
Даже при неправильном порядке аргументов компилятор не ругается. Почему так?


Stepan
14.05.2017
06:03:23
Первый абзац


Юрий
14.05.2017
06:09:31
? спасибо за инфу

Igor
14.05.2017
09:31:56
Я так понимаю способа запретить передавать null там где требуется number нельзя?
function caller() { test(null) }
function test(a: number) { }

Aleh
14.05.2017
09:32:49
strictNullCheck


Юрий
14.05.2017
09:34:57

Aleh
14.05.2017
09:35:13
всегда можешь геттер сделать
можешь сделать любое другой фейковое поле приватным

Google

Dreamerinnoise
14.05.2017
09:46:44
Вообще по дефолту же надо делать приватные поля

Igor
14.05.2017
09:48:03

andretshurotshka?❄️кде
14.05.2017
09:52:38
еще просто strict: true врубает все что можно

Aleh
14.05.2017
09:54:55
это в 2.3, да

andretshurotshka?❄️кде
14.05.2017
19:36:44
https://mobile.twitter.com/i/moments/863202076091961345

Artur
14.05.2017
19:45:08

Алексей
14.05.2017
19:47:01
Хорошее сравнение
Не совсем. Видно что они любит Flow - так что и результаты сравнения выворачиваются в соотвествии с "желаемым" результатом

Artur
14.05.2017
19:47:45
Тем не менее, я отсюда узнал про особенности, которые позволяют flow лучше типы выводить

Igor
14.05.2017
19:48:13
Хорошее сравнение
Flow - это же чекер кода? Как это может исправить убогость JS? Вся надежда на Reason

Vladimir
14.05.2017
19:48:28

Алексей
14.05.2017
19:49:05
https://twitter.com/thejameskyle/status/863181426769879040?ref_src=twsrc%5Etfw&ref_url=https%3A%2F%2Ftwitter.com%2Fi%2Fmoments%2F863202076091961345
TypeScript у него работает без выключенного AllowExplicitAny. Поэтому TS не считает это ошибкой
let add1 = (a, b) => a + b;
add1([], {});

Vladimir
14.05.2017
19:50:18
О том и речь, что тайпскрипту нужно больше аннотаций

Алексей
14.05.2017
19:50:23
С его точки зрения это совсем как плохо. Но о том что эта ошибка не находится пока у тебя нет флага. Он не уточняет.

Vladimir
14.05.2017
19:51:36
Но я согласен, что лучше приводить примеры, когда ТС фейлит со всеми возможными включенными флагами

Алексей
14.05.2017
19:53:37
В данном примере он показал то что TS пропускает ошибку. И он прав. Но он не тратит время на уточнения, на описание в каких ситуациях это происходит и почему. И как бы намекает "ну вот смотрите какой TS не хороший, а Flow молодец"
PS: Да в TS нужно больше времени потратить на описание типов, но мне кажется не намного больше чем во Flow.

Aleh
14.05.2017
19:57:12
Еще можно у флоу в игнор добавить файлы и делать в них ошибки, какой флоу плохой)

Юрий
15.05.2017
05:13:06
Народ, кто может подкинуть типичный пример из жизни с частичным применением функции или карированием?

marat
15.05.2017
05:27:03

Юрий
15.05.2017
05:33:09

Google

Kirill
15.05.2017
05:33:33
redux connect

marat
15.05.2017
05:35:42

Pavel
15.05.2017
05:35:56
с мемоизацией по аргументу

marat
15.05.2017
05:36:50
да и middleware сплошное карирование

Kirill
15.05.2017
05:37:26
js bind это каррирование?

marat
15.05.2017
05:38:38
не, это просто подмена контекста
хотя внутри наверно каррирование все же

Юрий
15.05.2017
05:40:08
ок, спасибо за советы

Artur
15.05.2017
06:34:56
Я частичное применени использую так:
Допустим есть реакт-компонент, в нём рендерится список, и нам при клике на элемент списка надо что-то сделать:
class SomeComponent extends React.Component {
private onItemClick = (item: Item) => {
}
render() {
return <div>{this.props.items.map(item =>
<div onClick={this.onItemClick.bind(this, item)}>{item.name}</div>
)}</div>
}
}
Вот обработчик onClick на каждом элементе - частично применённая функция.
Юрий ^^

Aleh
15.05.2017
06:38:48
Фильтры мапы с каким-то контекстом

Юрий
15.05.2017
06:39:20
ок. А кто-нибудь использует частичное применение для просасывания какого-нибудь контекста между большим количеством функций или когда вложенность функций очень большая?
вообще изначально я хочу именно такую проблему найти - когда есть множество функций, у которых есть некоторый аргумент, который фактическки является некоторым контекстом исполнения данной функции. Просто одно из решений данной проблемы - частичное применение с фиксированным контекстом. Но меня интересует не решение, а именно проблема.
тип того:
fun1(a,b,c,common)
fun2(d,e,f,common)
fun3(g,h,k,common)
...
ну и при вызовах этот последний параметр приходится просто протаскивать, хотя его можно было бы просто откуда-то из среды брать

andretshurotshka?❄️кде
15.05.2017
06:45:04

Artur
15.05.2017
06:46:02
bind в рендере еее
Конечно я не использую bind в рендере, у меня есть спец хелпер, который переиспользует результаты, но это уже другая история же

Олег
15.05.2017
06:53:44

Google

Юрий
15.05.2017
06:54:25

Олег
15.05.2017
07:00:21

Aleh
15.05.2017
07:02:08
Еще функции удобно юзать для стейтлесс сервисов

Nikita
15.05.2017
08:56:34

Олег
15.05.2017
09:00:50
передает аргумент в функцию

Nikita
15.05.2017
09:01:28

Олег
15.05.2017
09:04:14
ну, это реакт... )

Artur
15.05.2017
09:04:58

Admin
ERROR: S client not available

Artur
15.05.2017
09:05:22
Типа так?
class SomeComponent extends React.Component {
private onItemClick = (item: Item) => {
}
render() {
return <div>{this.props.items.map(item =>
<div onClick={this.onItemClick(item)}>{item.name}</div>
)}</div>
}
}

Nikita
15.05.2017
09:07:09
да только функцию изменить
private onItemClick = (item: Item) =() => {}

Aleh
15.05.2017
09:07:27
все равно, что байндить каждый раз)

Artur
15.05.2017
09:08:02

Aleh
15.05.2017
09:08:22
получится ж
просто скобок больше

Nikita
15.05.2017
09:08:37
да и я бы логику из return вынес бы

Aleh
15.05.2017
09:09:08
короч, хватит решать несуществующие проблемы)

Дмитрий
15.05.2017
09:16:21
А, хотя да, там та же фигня (всё не так)

Aleh
15.05.2017
09:17:25
угу, все равно на каждый вызов новая функция

Google

Aleh
15.05.2017
09:18:24
продолжая путь страданий, кто-нибудь нашел вменяемый tslint конфиг?
или продолжаем ждать ts в babylon?

Сергей
15.05.2017
09:21:06
или нужен публичный общепринятый?

Aleh
15.05.2017
09:21:27
мне чес говоря впадлу тыкать опции)
хочу npm i cool-tslint-config и не париться

Сергей
15.05.2017
09:21:43
я буду писать аналог от airbnb
расшарить потом?

Aleh
15.05.2017
09:21:54
да, давай

Дмитрий
15.05.2017
09:22:28

Сергей
15.05.2017
09:22:43
делать ПР

Aleh
15.05.2017
09:22:46
так и в eslint тоже, потому они плагинов написали)

Дмитрий
15.05.2017
09:23:29
В eslint даже в стандартной поставке просто тонна всего)

Aleh
15.05.2017
09:23:30
просто даж pr в babylon от команды ms есть, вот даже не знаю, стоит ли дергаться)

Nikita
15.05.2017
09:24:44

Aleh
15.05.2017
09:25:04
да, он чет сисярпный какой-то

Pavel
15.05.2017
10:26:52
https://github.com/eslint/typescript-eslint-parser норм тема?

Kirill
15.05.2017
10:33:51
А вот это жесткая тема? https://github.com/Microsoft/tslint-microsoft-contrib
Я пробовал, показалось очень строго всё. Но в подробности не вдавался.

Max
15.05.2017
10:38:34
http://s.syabro.com/2017-05-15-13-38-57mvh.png
странная херня

Nikita
15.05.2017
10:42:43