@typescript_ru

Страница 164 из 669
Aleh
29.01.2017
12:49:55
ну конкретно чтобы tsc сам по себе что-то думал про tslint нельзя, но никто не мешает делать tslint && tsc

или там tslint && webpack

Дмитрий
29.01.2017
12:50:09
Aleh
29.01.2017
12:50:13
ну или встраивать внутрь

Google
Дмитрий
29.01.2017
12:50:13
Конфига вебпака достаточно

Aleh
29.01.2017
12:50:47
думаю зависит

может кто-то хочет параллельно гонять

Vadim
29.01.2017
12:51:17
Конфига вебпака достаточно
Ты про этот плагин? https://github.com/wbuchwalter/tslint-loader

Дмитрий
29.01.2017
12:53:28
Ага

preLoaders: [ { test: /\.ts?$/, loader: 'tslint' } ], tslint: { failOnHint: true }, plugins: [

Vadim
29.01.2017
12:56:10
Сейчас попытаюсь к второму вебпаку прикрутить )

Friedrich
29.01.2017
12:56:39
Там же синтаксис описания настроек поменяли, да?

Дмитрий
29.01.2017
12:56:48
Во втором только немного иначе конфиг надо прописывать) Но суть думаю понятна

Vadim
29.01.2017
12:57:02
ага, спасибо

http://stackoverflow.com/questions/39919793/tslint-loader-with-webpack-2-1-0-beta-25/39997947#39997947

Дмитрий
29.01.2017
12:57:29
Кстати, есть какие-то способы завести ts c import()?

Google
Aleh
29.01.2017
12:58:56
не

Dreamerinnoise
29.01.2017
12:59:00
Пользоваться System.import

Ждать пока MS придумают

Дмитрий
29.01.2017
12:59:30
Эх

Опять суперсет js протёк ?

Ок, хорошо хотя бы так

Aleh
29.01.2017
13:00:16
а import уже js?)

который function-like

Vladimir
29.01.2017
13:00:59
почти

Aleh
29.01.2017
13:01:13
я кстати чет даж issue не нахожу

а, нашел https://github.com/Microsoft/TypeScript/issues/12364

Кстати, есть какие-то способы завести ts c import()?
https://github.com/Microsoft/TypeScript/issues/12364#issuecomment-270819757 костылики

Дмитрий
29.01.2017
13:05:27
еее регекспы

Vadim
29.01.2017
13:10:24
Ура! Все отваливается! )

В смысле, tslint-loader работает )

Ух, сколько сейчас исправить пришлось что б соответствовать правилам ) В общем, tslint-immutable работает, и это вещь!

Не нужно никакого immutable.js! )

Дмитрий
29.01.2017
13:29:08
Ну кстати immutable.js не поэтому нужен

У меня тс как то странно валился на выражении const immutableAdd = (state, object) => ({ ...state, [object.id]: object })

В итоге чтобы нормально работать, надо было или рамду или immutable.js

Google
Vadim
29.01.2017
13:31:31
Странно

Дмитрий
29.01.2017
13:32:25
Очень

Vadim
29.01.2017
13:32:39
Ну это уже дело в глюках

Дмитрий
29.01.2017
13:32:48
Он даже ничего конкретного не писал, просто ошибка в стиле "я не понимат"

Vadim
29.01.2017
13:33:22
Ну и понятно что иммутабл нужен еще для динамического контроля иммутабельности. Но я такой потребности пока не имею

Aleh
29.01.2017
13:36:00
а вообще any ж просто проставляет и все, не загоняется)

Aleksandr
29.01.2017
15:48:59
Парни, объясните в чем смысл такой записи: let tom: User = new User(2, "Denis");. Чем это лучше, чем так: let tom = new User(2, 'Denis');

Friedrich
29.01.2017
15:50:04
Э, ну ведь User и Something это два разных типа.

new User() и new Something() это воще две разных конструкции.

Roman
29.01.2017
15:50:40
тут что то с Interface`s связано

Friedrich
29.01.2017
15:51:08
Может быть и связано, но пока вопрос непонятно поставлен — вроде как, в данном случае аннотация типа к вопросу не относится.

Friedrich
29.01.2017
15:52:08
Можно было бы обсудить, зачем в типе переменной может потребоваться указывать более общий тип.

Aleksandr
29.01.2017
15:54:59
Ну да, я перепутал

Вот сейчас подправил

Friedrich
29.01.2017
15:56:36
А.

Ну, тут разницы никакой нету между строчками, имхо.

Aleksandr
29.01.2017
15:57:11
Просто первая запись для меня как-то очень странно выглядит

Friedrich
29.01.2017
15:57:14
Разве что если вдруг в будущем захочется поменять что-нибудь, как то let tom: User = new UserDerivedType();

Aleksandr
29.01.2017
15:58:27
http://metanit.com/web/typescript/3.2.php ну вот это руководство читаю и там везда объекты так объявляются

Google
Aleksandr
29.01.2017
15:58:52
Вот смотрите первый пример let bill: Employee = new Employee("Bill"); bill.getInfo(); bill.company = "Microsoft"; bill.work();

И снова вот так: let bill: Employee = new Employee("Bill");

Friedrich
29.01.2017
15:59:13
Мб это специально для мануала стиль такой выбран? Чтоб читателю всегда был виден выведенный тип переменной?

Короче, в данном конкретном случае у этого стиля никакого смысла нету. В настоящем коде я не видел, чтобы именно так кто-то писал.

Для полей класса или каких-то ещё случаев это может пригодиться, но для локальной переменной вряд ли.

Aleksandr
29.01.2017
16:01:28
Ок

Сергей
30.01.2017
08:33:02
Элвис-оператор предлагают https://github.com/Microsoft/TypeScript/issues/16

Aleh
30.01.2017
08:34:30
Сергей
30.01.2017
08:35:27
runtime проверка?

Aleh
30.01.2017
08:37:31
Да, этот issue старый, до strictNullChecks создан был

Admin
ERROR: S client not available

Aleh
30.01.2017
08:39:03
Короч все сейчас зависит от прогресса в tc39

Но все равно смысла мало кмк

Сергей
30.01.2017
08:39:54
в ruby есть, в rust есть

теперь в es предлагают.

Aleh
30.01.2017
08:40:54
Да, это понятно, но мне кажется, что скорее вредный оператор

Дмитрий
30.01.2017
08:41:19
Ну не факт

draft
30.01.2017
08:41:24
отличный оператор помоему

Сергей
30.01.2017
08:41:35
упрощающий, но сам подход таких проверок не редкость, хоть и вреден

draft
30.01.2017
08:41:43
когда в шарп добавили это было просто щикарно

Google
Дмитрий
30.01.2017
08:41:49
Если не затыкать им косяки в архитектуре, то вполне нормально

draft
30.01.2017
08:42:21
особенно при работе с лямдами на базу

Aleh
30.01.2017
08:44:42
Прост имея strictNull можно явно отделить нулы от не нулов и тогда оператор просто не нужен

Дмитрий
30.01.2017
08:52:43
Прост имея strictNull можно явно отделить нулы от не нулов и тогда оператор просто не нужен
Если у меня большая многократно вложенная nullable структура, то как по другому с ней ещё обращаться?

Aleh
30.01.2017
08:54:24
можно на примере?

Дмитрий
30.01.2017
08:56:41
Например протокол телеграма просто не шлёт кучу опциональных полей, если они не нужны, и для многих кейсов достаточно узнать что поля media.user.photo.id просто нет и не важно какого именно поля в пути не было

Aleh
30.01.2017
08:58:46
что значит "если не нужны"?

просто даже в этом варианте: if (hasPhoto(media.user)) { return renderPhoto(media.user.photo); }

Дмитрий
30.01.2017
09:02:21
У тебя не может быть абсолютно любого объекта в пути

chat.message.media.user.photo.id

Сообщение может быть без медиа, может быть не от юзера, может быть не от юзера с фото и т.д.

Aleh
30.01.2017
09:03:22
так и что? Если ты обрабатываешь весь объект chat в одном месте, то ты уже проиграл

Дмитрий
30.01.2017
09:03:31
Это не принципиально

Aleh
30.01.2017
09:03:40
а так, ты передал куда-то чисто media

если оно было

там уже проверки только для медиа

и в итоге нет никакой нужды в элвисе

Дмитрий
30.01.2017
09:04:12
Протокол телеграма — это как GraphQL, только наоборот, лол

а так, ты передал куда-то чисто media
Ну короче в итоге у тебя получится media && media.user && media.user.photo && media.user.photo.id только распиленный по функциям

Aleh
30.01.2017
09:07:23
ну это в общем-то принципиально

что это заставляет меня немного думать о декомпозиции

Сергей
30.01.2017
09:09:21
что это заставляет меня немного думать о декомпозиции
хах ну да лучше, ага hasAttachment(chat.message) -> hasPhoto(message.user) -> ->getPhoto(user.photo)

Дмитрий
30.01.2017
09:09:38
У меня так есть

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