
Aleh
29.06.2017
07:35:59
А, namespace еще

Дмитрий
29.06.2017
07:38:31
Декораторы
С другим принципом и более широким спектром вариантов)

Aleh
29.06.2017
07:38:56
Декораторы из es

Google

Aleh
29.06.2017
07:39:10
Тип нахер тащить текущие

Дмитрий
29.06.2017
07:39:22
Аа, ну да, логично

Mike
29.06.2017
07:41:15
Методы енумерабильны в es5 таргете

Aleh
29.06.2017
07:41:28
Это баг или фича?))

Mike
29.06.2017
07:41:37
Особенность
В es6 не энумерабильны

Aleh
29.06.2017
07:42:18
Ну я думаю, что это не будут делать в плагине бабеля

Mike
29.06.2017
07:42:30
С for in по объекту тривиально написать код который в es5 и es6 таргете работает с разной скоростью
Оц
Не скоростью
Разный результат
Поведение разное

Дмитрий
29.06.2017
07:50:54
Поэтому его лучше и не использовать

Google

Mike
29.06.2017
08:19:55
Я работаю с переводом огромного легаси на тайпу, у меня особо выбора нет. 10 мегабайт кода

Aleh
29.06.2017
09:38:57
ааа, блин
с енамами проблема
при транспайлинге
для const enum надо знать тип на этапе транспайлинга, это надо учитывать импорты
короч одни енамы прям хуже других

andretshurotshka?❄️кде
29.06.2017
09:43:38

Aleh
29.06.2017
09:44:22
если определение и использование const enum в одном файле, то еще можно разрулить, а вот с импортами уже проблема
хотя, если подумать, то с любыми импортами проблема

andretshurotshka?❄️кде
29.06.2017
09:51:42
А сам тс как это делает?

Aleh
29.06.2017
09:52:55
ну он-то типы знает)
да, короч с импортами засада будет

Артемий
29.06.2017
10:07:24
Всем привет!
Есть какой-то способ нормально заставить vscode воспринимать импорты ts файлов из js?
Собираю через webpack, babel+eslint для js, tsc+tslint для typescript. Никак не воспринимает содержимое ts файлов (там подсказки всякие и т.д.), либо не видит файлов, либо пытается скомпилировать ts и не может, так как eslint, получилось настроить чтобы просто игнорил эти файлы, но так не нравится.

Aleh
29.06.2017
10:10:45
честно говоря ничего не понял

Артемий
29.06.2017
10:18:30
когда подключаю делаю import js из js, то он например может сказать, что в файле нет такого экспорта (eslint import/named), когда подключаю js из ts тоже говорит, если ts из js подключать то не может нормально распарсить ts файлы.
При этом компилится все нормально и собирается.
Видимо проблема в том что eslint не может ts файлы по дефолту съедать, и для babel-eslint тоже для typescript плагин не нашел, наверно можно было бы решить переключением на typescript-eslint-parser, но тогда обычный babel-eslint отвалится.
По сути надо наверно придумать способ подключать babel-eslint для js файлов
и typescript-eslint-parser для ts файлов. Но не смог найти как это сделать.
Может быть есть какие-то другие пути?
по поводу нескольких парсеров вот что нашел
https://github.com/eslint/eslint/issues/8543

Aleh
29.06.2017
10:58:54
а почему проверку импортов не отдать тсу?
и в js и в ts

Google

Артемий
29.06.2017
11:13:50
потому что ts не съедает нормально js файлы, и для этого надо фиксить весь js
а хочется постепенно внедрить ts

Сергей
29.06.2017
11:18:01
может ли флоу в такой кейс:
const demo = createObject('prefix', ['add', 'create'])
в demo у меня будет объект
{
add: 'demo.add',
create: 'demo.create',
}
может ли flow как-то вывести тип объекта, с этими полями?

Adam
29.06.2017
11:30:54

Max
29.06.2017
11:31:36
сова, ты чатом ошибся )

Артемий
29.06.2017
11:32:14

Сергей
29.06.2017
11:32:18

Max
29.06.2017
11:32:46
ну нейминг кривой да
:)

Сергей
29.06.2017
11:33:18

Adam
29.06.2017
11:33:31

Aleh
29.06.2017
11:33:44

Сергей
29.06.2017
11:33:44

Adam
29.06.2017
11:33:45
я хотел написать, но подумал, что тебе ts не интересен

Сергей
29.06.2017
11:33:52

Adam
29.06.2017
11:33:54
да, можно и без интерфейса

Сергей
29.06.2017
11:34:03
О_О

Adam
29.06.2017
11:34:08
прям указываешь литерал объекта в типе

Сергей
29.06.2017
11:34:31
и VSCode может подсказать?

Google

Сергей
29.06.2017
11:35:03
и если я потом напишу demo.asdasdasd
будет ошибка?

Adam
29.06.2017
11:35:22
какие методы должны быть в объекте? Я попробую сейчас

Aleh
29.06.2017
11:36:07
покажешь???
https://www.typescriptlang.org/play/index.html#src=type%20ObjectWith%3CP%20extends%20string%2C%20M%20extends%20string%3E%20%3D%20%7B%0A%20%20%20%20%5BK%20in%20M%5D%3A%20string%0A%7D%0A%0Adeclare%20function%20createObject%3CP%20extends%20string%2C%20M%20extends%20string%3E(p%3A%20P%2C%20methods%3A%20M%5B%5D)%3A%20ObjectWith%3CP%2C%20M%3E%0A%0Aconst%20demo%20%3D%20createObject('prefix'%2C%20%5B'add'%2C%20'create'%5D)%0A%0Ademo.add.slice(1)

Сергей
29.06.2017
11:36:15

Aleh
29.06.2017
11:37:11
только походу нельзя сделать типа prefix + “.” + method
поэтому просто string поставил

Сергей
29.06.2017
11:37:33
в значении будет string
пофиг

Admin
ERROR: S client not available

Adam
29.06.2017
11:37:34

Сергей
29.06.2017
11:37:45

Aleh
29.06.2017
11:37:50
пожалуйста

Сергей
29.06.2017
11:38:27

Aleh
29.06.2017
11:39:16
хз, в вики есть

Сергей
29.06.2017
11:39:45

Adam
29.06.2017
11:40:53
зачем T extends String - ты что, ждёшь производные от String?

Сергей
29.06.2017
11:41:12
строки

Adam
29.06.2017
11:41:18
ты ждёшь строку, а не классы, её расширяющие, чтобы можно было правильно вывести тип на выходе

Google

Adam
29.06.2017
11:41:26
это избыточно

Сергей
29.06.2017
11:41:35

Dreamerinnoise
29.06.2017
11:41:44
ключ

Vladimir
29.06.2017
11:42:04

Aleh
29.06.2017
11:42:07
M это перечисление строк “a” | “b” | “c”
конструкция [K in M] что-то типа перебора по всем этим литералам

Adam
29.06.2017
11:42:58
я так и не понял интерфейс твоей функции, ты типа интерпретатора чтоли пишешь? Зачем принимать ['add', 'create'] - на мой взгляд это плохой интерфейс

Сергей
29.06.2017
11:43:47

Adam
29.06.2017
11:44:07
так тип-то какой у полей add и create?
String?
можно зделать захват литерала строки, если ожидаешь конкретную строку

Сергей
29.06.2017
11:45:14

Adam
29.06.2017
11:45:17
и будет intellisense

Сергей
29.06.2017
11:45:21

Adam
29.06.2017
11:45:31
сейчас попробую показать
let posibilities: 'add' | 'create';

Сергей
29.06.2017
11:46:08
extends string нужен в том примере
я хочу писать как можно меньше кода
один раз описать функцию без лишних вариаций значений и типов

Adam
29.06.2017
11:46:54
extends в этом примере не нужен, он нужен, если на входе вектора ты принимаешь точку, а на выходе сложения хочешь снова ветор вернуть

Сергей
29.06.2017
11:47:37