
Aleh
03.11.2016
20:48:29
а как оно должно работать О.о

Vladimir
03.11.2016
20:48:57
подтип string

Vasiliy
03.11.2016
20:49:33
типа type constraint?
а, нашел https://flowtype.org/blog/2015/03/12/Bounded-Polymorphism.html

Nikita
03.11.2016
20:49:36
не, TS не осилил

Google

Nikita
03.11.2016
20:53:10
http://bit.ly/2fmgpuA

Vasiliy
03.11.2016
20:54:17
да, про строковые type union's в ts чет я погнал
https://basarat.gitbooks.io/typescript/content/docs/types/stringLiteralType.html

Aleh
03.11.2016
20:54:25
не, TS не осилил
проблема с промисом, если ему туда Promise<{}>, то не показывает ошибку
зато имя константы норм понимает :))

Дмитрий
03.11.2016
20:55:22

Nikita
03.11.2016
20:55:37
в flow валидно

Дмитрий
03.11.2016
20:55:42
extends это extends, можно ещё с & записать

Nikita
03.11.2016
20:55:48


Aleh
03.11.2016
20:56:01
те понял, куда надо такое подсунуть?
https://www.typescriptlang.org/play/index.html#src=export%20type%20AppState%20%3D%20%7B%7D%3B%0A%0Aexport%20type%20SuccessAction%3CType%20extends%20string%2C%20Payload%3E%20%3D%20%7B%0A%20%20type%3A%20Type%2C%0A%20%20error%3F%3A%20false%2C%0A%20%20payload%3A%20Payload%0A%7D%3B%0A%0Aexport%20type%20ErrorAction%3CType%20extends%20string%3E%20%3D%20%7B%0A%20%20type%3A%20Type%2C%0A%20%20error%3A%20true%2C%0A%20%20payload%3A%20Error%0A%7D%3B%0A%0Aexport%20type%20Action%3CType%20extends%20string%2C%20Payload%3E%20%3D%20SuccessAction%3CType%2C%20Payload%3E%20%7C%20ErrorAction%3CType%3E%3B%0Aexport%20type%20AsyncAction%3CActionType%3E%20%3D%20(api%3A%20ThunkApi%3CActionType%3E)%20%3D%3E%20void%3B%0A%0Aexport%20type%20Dispatch%3CActionType%3E%20%3D%20(action%3A%20ActionType%20%7C%20AsyncAction%3CActionType%3E)%20%3D%3E%20void%3B%0Aexport%20type%20GetState%20%3D%20()%20%3D%3E%20AppState%3B%0A%0Aexport%20type%20ThunkApi%3CActionType%3E%20%3D%20%7B%0A%20%20dispatch%3A%20Dispatch%3CActionType%3E%2C%0A%20%20getState%3A%20GetState%0A%7D%3B%0A%0Aexport%20function%20dispatchAsync%3CT%20extends%20string%2C%20P%3E(dispatch%3A%20Dispatch%3CAction%3CT%2C%20P%3E%3E%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20type%3A%20T%2C%0A%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20promise%3A%20Promise%3CP%3E)%3A%20void%20%7B%0A%20%20promise.then((payload%3A%20P)%20%3D%3E%20%7B%0A%20%20%20%20const%20action%3A%20SuccessAction%3CT%2C%20P%3E%20%3D%20%7B%20type%2C%20payload%2C%20error%3A%20false%20%7D%3B%0A%0A%20%20%20%20dispatch(action)%3B%0A%20%20%7D%2C%20(payload%3A%20Error)%20%3D%3E%20%7B%0A%20%20%20%20const%20action%3A%20ErrorAction%3CT%3E%20%3D%20%7B%20type%2C%20payload%2C%20error%3A%20true%20%7D%3B%0A%0A%20%20%20%20dispatch(action)%3B%0A%20%20%7D)%3B%0A%7D%0A%0Aexport%20type%20LoadAction%20%3D%20Action%3C'ARCHIVE_LOAD'%2C%20number%3E%3B%0A%0Aexport%20function%20load(offset%3A%20string%7Cnull)%3A%20AsyncAction%3CLoadAction%3E%20%7B%0A%20%20const%20p%3A%20Promise%3C%7B%7D%3E%20%3D%20Promise.resolve(%7B%7D)%3B%0A%20%20return%20(%7B%20dispatch%20%7D)%20%3D%3E%20%7B%0A%20%20%20%20dispatchAsync(%0A%20%20%20%20%20%20dispatch%2C%0A%20%20%20%20%20%20'ARCHIVE_LOAD'%2C%0A%20%20%20%20%20%20p%0A%20%20%20%20)%3B%0A%20%20%7D%3B%0A%7D


Nikita
03.11.2016
20:56:12
не. смысл в том, что типом может быть константа. я хочу чтобы type всегда была строка
это и объясняю системе типов
да, TS молодец)

Aleh
03.11.2016
20:57:09
вот промисы вроде в 2.1 починили

Google

Дмитрий
03.11.2016
20:57:23

Aleh
03.11.2016
20:57:24
ща кстати тестану твой код без этого костыля с промисом
стопэ

Дмитрий
03.11.2016
20:58:54

Никита
03.11.2016
20:59:15
всем привет! Подскажите годный бойлерплейт тс+реакт+вебпак

Nikita
03.11.2016
20:59:44
@mkusher @vkurchatkin для сравнения выхлоп flow)) https://gist.github.com/nkt/07082fcfcc6926bdce14280398758319

Aleh
03.11.2016
21:00:08
не, ну он тоже вывел две константы

Nikita
03.11.2016
21:00:10

Vladimir
03.11.2016
21:01:18
Я честного говоря не знаю, как это сделать лучше

Aleh
03.11.2016
21:01:40

[Anonymous]
03.11.2016
21:01:50
кароче склонился к тс, а там если что свичнусь, на два стула не сесть
?

Vladimir
03.11.2016
21:02:08
Можно просто не выводить по юниону инфу, но будет ли это лучше?

Дмитрий
03.11.2016
21:02:13
Зачем вы string тут расширяете ?

Vladimir
03.11.2016
21:03:00
Потому что у строки есть подтипы
Например, 'foo' | 'bar' <: string

Nikita
03.11.2016
21:05:43

Дмитрий
03.11.2016
21:06:06
Всё логично, чтоо не так?

Google

マイク
03.11.2016
21:06:21
Объявление типа есть код

Дмитрий
03.11.2016
21:06:33
Ну кроме дженерика-строки, конечно

Vladimir
03.11.2016
21:06:35
Ну вообще ошибка может быть и там и там

Nikita
03.11.2016
21:06:43
Всё логично, чтоо не так?
ну подобное дает T: string. type может быть только строка, но дает мне возможность делать псевдо-паттерн-матчинг в редьюсерах
ну, это как .h файлы в c/c++. Есть интерфейс, а есть имплементация. Скорее всего ты ошибся в имплементации, а не декларации

Aleh
03.11.2016
21:09:35
блин, не могу понять, где тс фейлится с этим number определением, т.е. он понял, что надо number, но чето где-то попытался присвоить это в Error
сложна

Nikita
03.11.2016
21:09:53
там сложная логика с error)
но в flow работает.
может `error?:`убрать?

Aleh
03.11.2016
21:10:26
ну да, так и вроде нет места, где могло бы возникнуть такое предположение

Nikita
03.11.2016
21:10:52
какое

Aleh
03.11.2016
21:11:45
ну, что ты P(Payload) должен быть совместим с Error
но я кажется понял

Nikita
03.11.2016
21:12:04
это по FSA

Aleh
03.11.2016
21:13:02
fsa?

Nikita
03.11.2016
21:13:21
https://github.com/acdlite/flux-standard-action

Дмитрий
03.11.2016
21:13:31

Nikita
03.11.2016
21:13:48

Admin
ERROR: S client not available

Google

Aleh
03.11.2016
21:14:22
это по FSA
ну, я просто не сразу понял, как ts решил что P должен быть совместим с Error, по коду я вижу, что payload в одном случае Error, а в другом P

Nikita
03.11.2016
21:14:55
если error null | false - payload должен быть P. Если true - должен быть Error

Aleh
03.11.2016
21:15:10
я понимаю твою логику
я пытаюсь понять, как тс пришел к таким выводам

[Anonymous]
03.11.2016
21:16:30

Дмитрий
03.11.2016
21:27:48
ничего не понял))
>ну подобное дает T: string.
Дженерик типа стринг не даёт ничего кроме головной боли интерпретатору
interface IAction <T> {
type: string;
payload:T
}
Ваш тип все равно по нормальному выглядит вот так, и паттерн матчинг тоже будет работать именно с нормальной формой)

Nikita
03.11.2016
21:31:34
мм, я просто typedef-ы создаю. а тут наследование. но для flow/ts код будет аналогичным, скорее всего и тот и другой. А мой короче - потому так и пишу)

Дмитрий
03.11.2016
22:19:37

Nikita
03.11.2016
22:20:05
эм, нет)

Дмитрий
03.11.2016
22:21:49
Жуть какая

Nikita
03.11.2016
22:22:14
почему жуть?
вместо 4 строк, 1. по смыслу все также понятно.

Дмитрий
03.11.2016
22:30:19
Это же всё обобщить можно, вмеесто целого абзаца символов)
Хотя я наверное просто забыл, что в тс всегда всё так ?

Nikita
03.11.2016
22:32:10
не, я всегда готов больше кода написать, если от этого понятнее станет. тут скорее не понятно, тк пол файла - описание типов экшнов, а не сами экшны)

Дмитрий
03.11.2016
22:33:57
В тс это крайне тонкая грань)

Андрей
04.11.2016
05:55:46
насчет перечислений — в TS есть оба варианта — и полновесный enum и const enum, выпиливающийся при компиляции http://www.typescriptlang.org/docs/handbook/enums.html

Aleh
04.11.2016
06:22:49

Serhii
05.11.2016
04:38:08
ребята и девчата, пожскажите пожалуйста. есть проект на ноде, хочу попробовать TS, как максимально просто и безболезненно сделать переход? чем билдить проект? собирать все в бандл или оставить как есть - кучу модулей?

andretshurotshka?❄️кде
05.11.2016
04:41:07
на ноде бандл не нужен

Google

Aleh
05.11.2016
16:07:10
https://www.slideshare.net/mobile/VyacheslavSlinko/ss-68234313
https://twitter.com/vslinko/status/794859155509149696

Farrux
06.11.2016
04:53:12
Доброе утро, есть небольшой вопрос: через tsd установил express, pg, body-parser а потом через npm установил express, pg, body-parser. когда запускаю typescript файл:
config/db.ts(1,21): error TS2307: Cannot find module 'pg'.
index.ts(1,26): error TS2307: Cannot find module 'express'.
index.ts(4,29): error TS2307: Cannot find module 'body-parser'.
но сам js скрипт появился и работает.

Alex
06.11.2016
05:13:53
vможно добавить в compilerOptions allowJs: true
а можно установить тайпинги для модулей

Alexander
06.11.2016
09:02:35