@typescript_ru

Страница 237 из 669
da horsie
21.05.2017
06:28:47
дублирование своего рода

Friedrich
21.05.2017
06:29:24
А ты бы в отдельный тип это вынес. type RowNumber = 0 | 1 | 2;

da horsie
21.05.2017
06:29:26
либо делать искуственный тип и его экспортить только ради типизации

я вынес

Google
da horsie
21.05.2017
06:29:36
как раз про это и говорю

Friedrich
21.05.2017
06:29:39
А чо, нормально. Круто же!

da horsie
21.05.2017
06:29:41
тогда его надо экспортировать

type Coordinate = 0 | 1 | 2;

Friedrich
21.05.2017
06:30:33
Можно и не экспортировать. От паттерна использования зависит.

da horsie
21.05.2017
06:30:53
ну как бы засирается экспорт полностью искусственной штукой. тип ради типа

Friedrich
21.05.2017
06:30:56
(но лучше экспортировать, конечно, а не то наркоманы потом будут твой тип вычислять всякими магическими способами, как я вчера)

da horsie
21.05.2017
06:31:36
если не экспортировать, то TS не догоняет, что 0 это правильное значение, и пиздит на меня :(

не везде, но в в некоторых сложных местах

Friedrich
21.05.2017
06:33:09
Вообще, мне кажется, что код нормальный. Можно поулучшать тут и там, если задаться конкретным вектором (скажем, для Cell.player не прописано, что он бывает undefined), но в целом очень неплохо.

da horsie
21.05.2017
06:33:16
а можно по типу итерировать?

вроде Coordinate.map(...)

чтобы по всем допустимым значениям прошлось?

Google
Friedrich
21.05.2017
06:33:55
Есть специальные волшебные штуки для преобразования свойств типа. Mapped types называется, кажется.

вроде Coordinate.map(...)
Но именно так вроде нельзя.

Чтоб по значениям проходиться — не, такой фичи не помню. Разве что по значениям энума. Но энумы это такое.

da horsie
21.05.2017
06:35:23
ооооо

вроде похоже на то, что мне надо

ща попробую

не, прям там слету не вышло

@fvnever а насколько нормально в тайпскрипте класть каждый класс в отдельный файл?

у меня модуль распух на 150 строк, и уже начало задалбывать скролить по файлу

Mike
21.05.2017
07:04:44
@fvnever а насколько нормально в тайпскрипте класть каждый класс в отдельный файл?
я так делаю. Ну почти всегда. Мелкие сервисные классы могу рядом положить.

da horsie
21.05.2017
07:05:48
а какой-то аналог автзагрузки по имени модуля/неймспейса есть?

чтобы импорты не писать по сто раз

хотя и хрен бы с ним. когда начинаешь по модулям раскидывать сущности, выплывают косяки дизайна

оно даже и хорошо

Friedrich
21.05.2017
07:51:07
@fvnever а насколько нормально в тайпскрипте класть каждый класс в отдельный файл?
Вполне нормально. На деле поступают по-разному, но эта практика ок.

Дмитрий
21.05.2017
07:52:47
Я ещё и сами типы отдельно выношу, чтобы не мельтешили)

ну как бы засирается экспорт полностью искусственной штукой. тип ради типа
Не искусственной, а виртуальной. В транспилированном коде этого экспорта вообще не будет

da horsie
21.05.2017
07:54:41
Не искусственной, а виртуальной. В транспилированном коде этого экспорта вообще не будет
у меня глобальная задача - написание фреймворка, которым потом будет пользоваться несколько десятков человек. поэтому в моем случае это все никуда не денется, если я правильно понимаю.

т.е. они этот код будут юзать как TS, а не как готовые скомпилированные модули

Google
da horsie
21.05.2017
07:55:47
внутренняя - никак. я беспокоюсь о фасаде

но вообще та моя конкретная проблема оказалась не проблемой

da horsie
21.05.2017
07:56:37
все работает и без экспорта)

Посмотри как сделаны фреймворки или либы на ts
обязательно. это следующий шаг после того, как потрогаю язык

а вот еще вопро

с

getBlah(): Foo | undefined - тут undefined можно не добавлять, его и так можно вернуть, да?

Friedrich
21.05.2017
08:06:37
getBlah(): Foo | undefined - тут undefined можно не добавлять, его и так можно вернуть, да?
Лучше всего добавлять. undefined обязательно указывать, если включена опция strictNullChecks.

da horsie
21.05.2017
08:06:55
спасибо

а какие самые строгие настройки в этом плане?

Friedrich
21.05.2017
08:09:11
а какие самые строгие настройки в этом плане?
https://www.typescriptlang.org/docs/handbook/compiler-options.html См. --strict.

(либо компилятору в командной строке передаёшь, либо указываешь в tsconfig.json)

da horsie
21.05.2017
08:11:10
о круто круто спасибо

а какой правильный линтер для TS?

вот, скажем, надо писать public перед методами или хер с ним?

Friedrich
21.05.2017
08:38:02
tslint же. Разве есть ещё какой-то? :)

Ну и там вкати для начала tslint:recommended, а дальше под себя настраивай.

da horsie
21.05.2017
08:46:15
ну я это. не бейте сильно. в гугле много противоречивого. а вы эксперты)

Google
Denis
21.05.2017
09:55:53
Добрый день, прошу помощи сильных мира сего. Сам очень люблю TS как язык, но каждый старт проекта на нем похож на своеобразную пытку из-за необходимости вручную искать и подключать d.ts библы, а если их нет, то изворачиваться через declare any Так вот вопрос, какими средствами/утилитами пользуетесь для облегчения участи TS-программиста?

Friedrich
21.05.2017
09:56:46
npm install --save-dev @types/libraryname

Да, изредка этот вариант подводит, но тогда я стараюсь писать тайпинг и контрибьютить его в DefinitelyTyped :)

Dreamerinnoise
21.05.2017
09:58:13
^

Denis
21.05.2017
09:58:37
а поиск она производит в гитхабе или npm?

Friedrich
21.05.2017
09:58:58
В npm автоматически заливаются тайпинги из DefinitelyTyped.

Denis
21.05.2017
09:59:30
о круто, я знал про этот инструмент, но опасался его использовать, так как думал, что там все запоздавшее или ограниченное

Friedrich
21.05.2017
09:59:39
Сегодня этот вариант заменяет нам утилиты tsd и typings, которыми приходилось пользоваться раньше.

Denis
21.05.2017
10:00:23
Да, изредка этот вариант подводит, но тогда я стараюсь писать тайпинг и контрибьютить его в DefinitelyTyped :)
помню как пришлось 4 дня убить на полное описание в d ts API яндекс карт в конце концов плюнул и описал лишь необходимое мне

а было дикое желание закончить и залить в dt

Admin
ERROR: S client not available

Friedrich
21.05.2017
10:01:00
Можно было и недопиленное залить.

Denis
21.05.2017
10:01:15
тип сообщество дополнит?

Friedrich
21.05.2017
10:01:17
Если каждый будет делать нужные ему кусочки и делиться с остальными — так победим.

А если каждый будет каждый раз сам делать у себя нужные кусочки, и ни с кем не делиться — тогда не победим :(

Denis
21.05.2017
10:01:58
хз почему мне такой вариант сразу в голову не пришел, видимо не с того угла смотрел на проблему, спасибо

а какие вообще инструменты посоветуете для работы с TS

Friedrich
21.05.2017
10:02:43
Мне очень нравится vscode с соответствующим плагином.

Ни разу не подводила.

Denis
21.05.2017
10:04:01
я пока ограничиваюсь WebStorm как IDE и tslint для сборки использую самопальный npm run-скрипт

Google
Denis
21.05.2017
10:05:38
а VS code дружит с смарт подстановкой(подбор вариантов в зависимости от типа)?

Friedrich
21.05.2017
10:05:42
Мне на разных проектах доводилось пользоваться Visual Studio + Resharper или IDEA. Так вот, Visual Studio очень плохо умеет в фичи новых версий тайпскрипта (всегда отстаёт на минорную версию), так что ей пользоваться тяжело. IDEA не отставала, но в ней у меня эпически тормозил tslint (прям по пять-десять секунд после вставки каждой строки).

Nikita
21.05.2017
10:07:46
Мне очень нравится vscode с соответствующим плагином.
не подскажите как прогонять tsx файлы ещё и через ESLint а то он с ними не дружит, в vsc

Denis
21.05.2017
10:08:19
да, тормозы tslint-а очень заметные, те вполне спокойно можно попробовать использовать VS code как основную среду? просто раньше отношение было примерно на уровне смарт текстового редактора(как напр sublime) и это несколько пугало

Denis
21.05.2017
10:11:23
понимаю, что на вкус и цвет фломастеры разные) но интересует как дружит vscode с ftp/sftp и рефакторингом(хватит на уровне простых замен наименований)

Дмитрий
21.05.2017
10:12:04
Нормально дружит с рефакторингом

В ts всё отлично с тайпингами, надо ещё радоваться))

Сейчас посчитал — у меня в проекте 15 кастомных тайпингов

Радуйтесь, что у вас не так ?

Aleh
21.05.2017
10:13:00
Кастомные = твои?

Дмитрий
21.05.2017
10:14:29
Ну типа того

Как минимум, каждый из них вручную отредактирован после конвертации, больше половины — написаны лично ?

Friedrich
21.05.2017
10:16:17
А чем и откуда конвертировалось?

da horsie
21.05.2017
10:18:21
Разбил на модули. Доктор, насколько все плохо? https://github.com/f3ath/tic-tac-toe-typescript

Denis
21.05.2017
10:20:58
а зачем [0,1,2] в Board-е?

в самом начале

da horsie
21.05.2017
10:24:38
а зачем [0,1,2] в Board-е?
Я так строю сетку 3х3

Поставь strict: true в tsconfig
Сделаю, спасибо

Aleh
21.05.2017
10:29:20
По неймингу: называть интерфейс названием паттерна такая себе затея. В тестах динамически строить имена тож не очень

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