
Adel
10.02.2017
14:34:46
первый аргумент как получить?

Сергей
10.02.2017
14:35:00
ты его деструктурировал
const foo = ({ a, b, ...another }, forced) => {}

Adel
10.02.2017
14:35:33
обожди

Google

Adel
10.02.2017
14:35:36
вот пример
(attributes: {name, type}, options: {disabled}, someFactory, forced) => TYPES[type] && someFactory(attributes, disabled, forced)
при этом на присваивании это норм будет работать

Сергей
10.02.2017
14:37:36
тебе надо сначала получить ссылку на целый объект, чтобы им оперировать
это норм
вот так типы обычно записывают ))

Adel
10.02.2017
14:38:03
(attributes, options, someFactory, forced) => {
const {name, type} = attributes;
const {disable} = options;
return TYPES[type] && someFactory(attributes, disabled, forced)
}
я вынужден писать вот такое

Сергей
10.02.2017
14:38:21
ну понятное дело

Adel
10.02.2017
14:38:29
чего понятного-то

Сергей
10.02.2017
14:38:30
можно и инлайн))

Adel
10.02.2017
14:39:34
при присваивании я могу разобрать всю конструкцию произвольной глубины и не растерять первый уровень глубины, а в аргументах с чего-то хер, получаются функции с неименованными аргументами, что тоже так себе

Сергей
10.02.2017
14:39:55
чувак при приссваимвании у тебя уже есть ссылка на объект в области видимости

Google

Сергей
10.02.2017
14:39:59
в аргументах нет
вся разница
можно так
и проще

Adel
10.02.2017
14:41:01
ну на самом деле бабелизация делает промежуточные аттрибуты и отлично там есть ссылка

Сергей
10.02.2017
14:41:22
а вот в нативном коде нет
да в бабелизации ты не можешь получить к этой ссылке доступ

Adel
10.02.2017
14:41:48
ну могли бы и передать, если я явно это указываю, но в языке нет возможности указать явно и деструктурировать

Сергей
10.02.2017
14:41:52
суть в том, когда ты деструктурируешь аргумент, ты как бы говоришь, мне не нужен весь объект, только его поля

Adel
10.02.2017
14:41:53
либо одно либо другое

Сергей
10.02.2017
14:42:03
при присваивании есть

Adel
10.02.2017
14:42:23
ага и потом еще приписываю ...props и собираю потом обратно все это при прокидывании в дальнешие вызовы

Сергей
10.02.2017
14:42:24
но ты неправильно понимаешь аргументы
в массиве тоже нельзя

Adel
10.02.2017
14:42:39
facotry({prop, ...props})

Сергей
10.02.2017
14:42:40
const [a, { b }] = c
та же проблема

Adel
10.02.2017
14:43:28
пфф ну что за полумеркель

Google

Adel
10.02.2017
14:43:53
мы вам дадим деструктуризацию, но вы, ребята "не деструктурируй, используй дот-нотацию и всё ок" ))))

Сергей
10.02.2017
14:44:07

Adel
10.02.2017
14:44:09
я понимаю, как из этого выкрутиться
вопрос в том, что я не хочу выкручиваться, я хочу как в присваивании)))

Сергей
10.02.2017
14:44:29

Adel
10.02.2017
14:44:37
там где вынужден

Сергей
10.02.2017
14:44:38

Adel
10.02.2017
14:44:47
однострочники тогда сосут

Сергей
10.02.2017
14:45:26
аргументы это массив, там нет имен, есть только порядок
поэтому так нельзя сделать
если бы было:
const foo = (a as { b }) => {}

Adel
10.02.2017
14:45:31

Сергей
10.02.2017
14:45:47
ну тогда это твои проблемы)))
написать точку не проблема

Adel
10.02.2017
14:45:53
аргументы это не массив все мы это давно знаем))))

Adel
10.02.2017
14:46:21

Сергей
10.02.2017
14:46:26

Adel
10.02.2017
14:46:53
make js great again

Сергей
10.02.2017
14:47:14
es.delete(6)
кстати, можно предложить в стандарт
const foo = (a as { b }) => {}
врятли многие проголосуют конечно

Dmitriy
10.02.2017
14:48:33

Сергей
10.02.2017
14:49:04

Google

Сергей
10.02.2017
14:49:20
суть в том, что такой синтаксис всё сломает
да и к тому же : в деструктуризации убирает ключ из области видимости
а если он в аргументах будет работать по другому, будет неконсистентно

Dmitriy
10.02.2017
14:50:28
на первый взгля вроде ни с чем не конфликтует
а это потому что в деструктуризации надо вернуть ключ в область видимости

Сергей
10.02.2017
14:51:41
{ a: b } — b есть, a — нет
не просто так добавили
а теперь ты говоришь
{ a: b } — будут оба ??

Admin
ERROR: S client not available

Dmitriy
10.02.2017
14:53:14
я ж не говорю что это будет обратно совместимо

Сергей
10.02.2017
14:53:19
не добавят) никогда

Дмитрий
10.02.2017
14:53:42

Сергей
10.02.2017
14:53:47
в массивы может быть
что-то вроде:
const [ a, { b } as c, ...other ] = prop
тогда да, было бы удобнее

Дмитрий
10.02.2017
14:53:54
А ты в деструктуризации что-то ломать хочешь))

Сергей
10.02.2017
14:55:12
тогда и в функциях можно было бы делать
const foo = (a, { b } as c, ...other) => {}
Но вопрос захотят ли
кстати было бы уместно, ибо в модулях похожая штука

Adel
10.02.2017
15:05:32
Я пока не догоняю, а почему не
const foo = (a, c: { b }, ...other) => {}
В присваивании же так и ничего не теряется

Сергей
10.02.2017
15:12:20

Adel
10.02.2017
15:12:44
Ничего он не скрывает

Сергей
10.02.2017
15:12:52
бля

Google

Adel
10.02.2017
15:13:08
Так стой

Сергей
10.02.2017
15:13:12
const { a: { b } } = { a: { b: 1 } }
console.log(a, b)
запусти

Adel
10.02.2017
15:13:31
Я проверю, конечно, но у меня в коде это есть
Либо меня глючит и тогда соррян

Сергей
10.02.2017
15:13:56

Pavel
10.02.2017
15:19:45
Забавная штука
class If extends React.Component {
static propTypes = {
condition: React.PropTypes.bool
};
render () {
if(this.props.condition) {
return this.props.children;
}
return null;
}
}
export default If;
<IF condition={true}><div /></IF>

Сергей
10.02.2017
15:21:11
класс не нужен

Дмитрий
10.02.2017
15:21:15
ng-if

Сергей
10.02.2017
15:21:36
const If = ({ cond, children }) => cond ? children : null

Pavel
10.02.2017
15:22:43
:+1:

Pavel
10.02.2017
15:46:22
Расцветка сочная. ЧТо за редактор и схема?

Mike
10.02.2017
15:46:46
похоже на VSCode

Artyom
10.02.2017
15:47:05

Джон
10.02.2017
15:48:21

Pavel
10.02.2017
15:48:29

Mike
10.02.2017
15:48:38
не ясно нафиг на скрине импортится PropTypes, если юзается все равно React.PropTypes

Pavel
10.02.2017
15:48:47
ничоси

Джон
10.02.2017
15:48:55