@typescript_ru

Страница 71 из 669
Vadim
16.09.2016
16:08:15
Это расширение типа?

Alex
16.09.2016
16:08:18
& это примерно как extends у интерфейсов

Vadim
16.09.2016
16:08:29
Ага, точно! Спасибо!

Просто не часто встретишь такой код )

Google
Vadim
16.09.2016
16:33:13
Еще вопрос: Как задокументировать this для тела каллбека?

Просто внутри каллбека this будет содержать определенный набор полей. Как это указать в интерфейсе?

andretshurotshka?❄️кде
16.09.2016
16:34:16
(this: SomeInterface) => {}

Vadim
16.09.2016
16:35:04
Ух ты! Не слышал про такое. Попробую

А в каком месте интерфейса это указать? Вот например, так задан интерфейс функции: interface Func { (name: string): number; } Куда там ткнуть указание типа this?

Artur
16.09.2016
16:40:57
Перед name

Это фича тс 2

Vadim
16.09.2016
16:41:37
А... А до тс 2 this задокументировать невозможно?

Artur
16.09.2016
16:41:46
Нет

Vadim
16.09.2016
16:41:59
Жаль. Спасибо!

Artur
16.09.2016
16:43:28
Не за что)

А почему 2 версию не взять?

Vadim
16.09.2016
16:43:59
А она разве уже продакшн-реди?

Google
Vadim
16.09.2016
16:44:18
У нас просто в продуктах запрещено использовать беты )

Artur
16.09.2016
16:46:01
Она уже не бета

Dreamerinnoise
16.09.2016
17:25:50
Она релиз кандидат

Vadim
16.09.2016
17:26:18
С релиза начнем юзать )

Vladimir
16.09.2016
19:57:28
Так-то релизнулся:)

http://angularjs.blogspot.ru/2016/09/angular2-final.html

Roman
16.09.2016
20:22:35
Читаю про TS 2, возник вопрос про readonly: interface Point { readonly x: number; readonly y: number; } var p1: Point = { x: 10, y: 20 }; p1.x = 5; // Error, p1.x is read-only var p2 = { x: 1, y: 1 }; var p3: Point = p2; // Ok, read-only alias for p2 p3.x = 5; // Error, p3.x is read-only p2.x = 5; // Ok, but also changes p3.x because of aliasing Вроде бы про p2.x = 5; понятно. Это объект обычный, но почему валидно что меняет и p3.x?

С точки зрения JS само собой валидно, но TS почему не чекает

вернее, почему считает такое валидным

Vladimir
16.09.2016
20:25:05
Потому что для TS это норма

Но в данном случае - это и не обязательно плохо

Roman
16.09.2016
20:26:02
ну ок, я не силен в теории, но с практической точки зрения это грозит ошибками. я ожидаю readonly, но выходит что лучше от объекта не присваивать по ссылке, а копировать

Vladimir
16.09.2016
20:26:32
readonly ограничивает интерфейс, но не означает, что поле immuatable

То есть, возможна такая интерпретация

Вот если бы наоборот можно было сделать - тогда точно ошибка

Roman
16.09.2016
20:27:44
то есть по сути основная цель - запретить мне менять напрямую свойства объекта реализующего данный интерфейс

Vladimir
16.09.2016
20:28:02
Запретить тому, кто работает с таким интерфейсом

Но из другого места этот объект может быть доступен через другой интерфейс, без readonly

Roman
16.09.2016
20:30:21
Понял, спасибо. Пытаюсь осознать практические cons от такого решения.

Vladimir
16.09.2016
20:31:00
Для type system со строгим variance это было бы мега важно

Google
Roman
16.09.2016
20:31:03
*pros

Vladimir
16.09.2016
20:31:13
Для TS - не особо

Просто для удобства, как private поля, например

Roman
16.09.2016
20:32:52
кстати с той бучей по private полям что нибудь прояснилось? (@/#)

Vladimir
16.09.2016
20:33:15
Да нет вроде, там в 20 числа заседание

Mike
16.09.2016
20:34:34
readonly != const

Есть кто уже на front talks?

Ҫѐҏӗѫӑ
17.09.2016
09:34:38
ага

мы к обеду пришли и вот на Грищенко

Vadim
18.09.2016
13:50:45
Вопрос: Функция принимает аргумент типа SomeType[] Как мне в нее передать пустой массив? Если я это делаю, то компилятор ругается: Argument of type 'undefined[]' is not assignable to parameter of type 'SomeType'

Alexander
18.09.2016
13:51:08
Как объявлен этот массив?

Vadim
18.09.2016
13:51:39
Просто в функцию передаю пустой массив

Vadim
18.09.2016
13:51:57
myFunction([])

А интерфейс у функции такой: (SomeType[]): void;

Пока нашел только такой совет: var arr : SomeType[] = [];

Alexander
18.09.2016
13:53:01
Нужно либо привести его явно к типу (as SomeType[])

Либо так, да

Vadim
18.09.2016
13:53:23
Значит нет менее громоздкого решения? )

Может можно в интерфейсе функции указать что аргументом может быть так же пустой массив?

Mike
18.09.2016
13:54:02
Так низя

Google
Mike
18.09.2016
13:54:19
Ну всмысле нет такого типа пустой массив

Alexander
18.09.2016
13:54:21
А зачем передавать пустой массив?

Vladimir
18.09.2016
13:54:25
https://www.typescriptlang.org/play/index.html#src=interface%20a%20%7B%7D%0D%0A%0D%0A%0D%0Afunction%20test(x%3A%20a%5B%5D)%20%7B%7D%0D%0A%0D%0Atest(%5B%5D)

Alexander
18.09.2016
13:54:28
Если можно ничего не передавать

Vladimir
18.09.2016
13:54:30
?

вроде работает, не?

Artur
18.09.2016
13:54:51
А в чем проблема? var a:Foo[] = new Array<Foo>()?

Admin
ERROR: S client not available

Vadim
18.09.2016
13:55:17
Действительно в вашем примере все работает :/

Сейчас тогда разберусь почему у меня ругается

Aleh
18.09.2016
13:59:17
как получилось сделать undefined[]?

Alexander
18.09.2016
13:59:51
TS сам вывел

Vadim
18.09.2016
14:00:01
Да, это просто ругань в консоли

Вот что у меня: https://www.typescriptlang.org/play/index.html#src=interface%20FormErrors%20%7B%0D%0A%20%20%20%20%5Bname%3A%20string%5D%3A%20string%5B%5D%3B%0D%0A%7D%0D%0A%0D%0Aconst%20setForm%20%3D%20(errors%3A%20FormErrors)%20%3D%3E%20%7B%0D%0A%20%20%20%20%0D%0A%7D%3B%0D%0A%0D%0AsetForm(%5B%5D)%3B

В общем, разница с кодом, который скинул выше Владимир, в том, что массив задается в виде интерфейса

Aleh
18.09.2016
14:07:31
https://www.typescriptlang.org/play/index.html#src=interface%20FormErrors%20%7B%0D%0A%20%20%20%20%5Bname%3A%20string%5D%3A%20string%5B%5D%3B%0D%0A%7D%0D%0A%0D%0Aconst%20setForm%20%3D%20(errors%3A%20FormErrors)%20%3D%3E%20%7B%0D%0A%20%20%20%20%0D%0A%7D%3B%0D%0A%0D%0AsetForm(%7B%7D)%3B

нет

Vladimir
18.09.2016
14:08:01
так тут не массив должен быть

Vadim
18.09.2016
14:08:14
Да, забавно )))

Я ступил, сорри! )

Google
Mike
18.09.2016
17:03:09
а во flow bind строго типизирован?

Vladimir
18.09.2016
17:08:36
да

Mike
18.09.2016
17:22:32
а можешь линк кинутькак они это сделали

там есть вариадик темплейты?

это вообще общий кейс или частный случай

Vladimir
18.09.2016
17:24:41
Частный случай

https://github.com/facebook/flow/blob/master/lib/core.js#L97

Вариадик темплейтов нет

Mike
18.09.2016
17:25:44
я похоже в тайпскрипте это сделал

также как Александреску в свой время в плюсах, пока вариадик темплейтов не было

рекурсивным списком типов

буду приводить в порядок то что я тут наваял, позже выложу

Aleh
19.09.2016
09:03:54
просто интересно

Mike
19.09.2016
09:05:15
сейчас попробую простой сделать

блин всё пока неоднозначно

по мере хоть сколько-то вменяемого результата скажу, может я и поторопился с выводами

Nikita
19.09.2016
16:33:25
а какой смысл от типизации react-redux, если она не работает?

Aleh
19.09.2016
16:33:32
?

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