
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

Дмитрий
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

Дмитрий
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

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, только наоборот, лол

Aleh
30.01.2017
09:07:23
ну это в общем-то принципиально
что это заставляет меня немного думать о декомпозиции

Сергей
30.01.2017
09:09:21

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