@typescript_ru

Страница 279 из 669
Andrew
13.07.2017
10:43:46
народ, кто-нибудь знает, почему в первом случае компилятор не может вывести тип для done?

https://gist.github.com/impworks/5705f2c55327b73884aba3157685fe04

Friedrich
13.07.2017
10:45:44
Я, я, можно я отвечу?

Andrew
13.07.2017
10:46:53
Жги!

Google
Friedrich
13.07.2017
10:47:11
народ, кто-нибудь знает, почему в первом случае компилятор не может вывести тип для done?
Конпелятор выбирает первую сигнатуру, которая подходит. Сигнатура с assertion?: () => void тебе подходит по какой-то мутной причине, в которую я вдаваться не буду, потому что забыл. Решение: переставить объявления в jasmine1.d.ts местами.

Andrew
13.07.2017
10:47:50


Friedrich
13.07.2017
10:47:53
А, тут даже ещё лучше: тебе не нужна первая сигнатура.

krn
13.07.2017
10:47:58
конпелятор ><

Friedrich
13.07.2017
10:48:37
Дело в том, что любая функция типа () => void будет подходить под сигнатуру (done: () => void) => void. И для этого как раз причина внятная: любой функции разрешено игнорировать аргументы.

Andrew
13.07.2017
10:49:18
Это-то понятно, но я удивлен что он выбрал не наиболее подходящий тип, а первый в порядке следования

Friedrich
13.07.2017
10:49:37
Поэтому всё, что ты хочешь, делается сигнатурой № 2. Объявление type JasmineAssertion = (() => void) | ((done: () => void) => void) также не имеет смысла, поскольку второй терм покрывает первый.

Это-то понятно, но я удивлен что он выбрал не наиболее подходящий тип, а первый в порядке следования
выбирай первый по порядку следования — это стандартное поведение компилятора в любых непонятных ситуациях. Я где-то это даже читал в FAQ от Хейлсберга.

Andrew
13.07.2017
10:50:32
а, ну тащемта они в последней версии так и сделали - просто оставили везде (done: DoneFn) => void

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

Friedrich
13.07.2017
10:51:13
Скорее всего, FAQ как раз обсуждал эту самую ситуацию, в которую ты попал.

Dmitry
13.07.2017
20:37:28
бандиты, а я че не могу делать extend interface во flow?

и optional параметры в interface нет?

Google
Дмитрий
14.07.2017
04:29:07
Делаешь что то не так

Karl
14.07.2017
10:53:37
начал тут вкуривать в плов, и наткнулся на любопытную вещь https://flow.org/en/docs/types/arrays/#toc-array-access-is-unsafe

вопрос, как я понял в ts тоже так? это правда

Aleh
14.07.2017
10:54:41
спс

вопрос, как я понял в ts тоже так? это правда
в ts array access тоже unsafe, но pop() “safe”

все это оч условно

Aleh
14.07.2017
11:00:19
Используй tuples, как в flow так и в ts
ну как, вроде в ts особо не помогает при доступе по индексу)

Дмитрий
14.07.2017
11:00:53
Ну тогда лан)

Летучая
14.07.2017
11:01:07
надо явно определять классы ?

Karl
14.07.2017
11:01:28
а если мне надо сделать по массиву find, а он может вернуть или эл-т типа или undefined - как быть? объявлять тип со знаком "?" ?

Дмитрий
14.07.2017
11:01:35
Хотя

ну как, вроде в ts особо не помогает при доступе по индексу)
https://flow.org/try/#0MYewdgzgLgBANgS2gLhmArgWwEYFMBOA2gLowC8MhADADQwCMxAUKJLFOgA5y7KEY4CdAXnykK1OoyZNE0asQDcspFEIBmJTI7dcC5Tp4alQA В flow помогает

Надеялся что в ts так же ?

Karl
14.07.2017
11:06:45
угу, но если я это забуду сделать, flow это благополучно скушает

а потом жди беды

Google
Дмитрий
14.07.2017
11:08:06
find возвращает ?T тип

T | void, если быть точным

Aleh
14.07.2017
11:09:31
угу, но если я это забуду сделать, flow это благополучно скушает
https://flow.org/try/#0MYewdgzgLgBAhjAvDA2gRgDQCYMGYMAsGArALoBQ5oksARkvAHQBmAlmACYAUCiAfPCSJkBAJSVajKCADKUAE7sA5l1FA

Karl
14.07.2017
11:13:07
ага, я был неправ, сам проверил https://flow.org/try/#0C4TwDgpgBAKlC8UDeAoAkAQwFxQHYFcBbAIwgCcUBfFFAYwHtcBnYKAGwEsWcBBMsjCAA8MAHwIoAbRRRk2KAEZKAGjk4ATCrVQAzNQC6AbhoNmrAG4Y2+CDjiJOLAHQAzDrgAmACi+XrEAEoEcT8bJwwocQUABgDjOkYWKDIIJnw2YBwCEnIJUIhwwyA

а если я юзаю find из лодаша, мне надо его .. ээ.. тайпдефы подключить?

Дмитрий
14.07.2017
11:14:05
Ага

flow v50 - Added `$Values type` Еее, свершилось

Karl
14.07.2017
11:14:48
а что это такое? если не для посвященных

Дмитрий
14.07.2017
11:14:58
make flow great again ?

Это прям хреновое отставание было

andretshurotshka?❄️кде
14.07.2017
11:16:17
теперь тс не нужен?

Дмитрий
14.07.2017
11:17:43
Как opaque types релизнут, так сразу))

Я всё же уверен, что это именно то, что нужно для полноценного описания функтора ?

andretshurotshka?❄️кде
14.07.2017
11:18:20
Типа mapped types в ts
а свои mapped types можно?

Дмитрий
14.07.2017
11:18:58
А какие ещё бывают?) ?

Vladimir
14.07.2017
11:19:16
$Values абсолютно бесполезен

Дмитрий
14.07.2017
11:19:39
Не сомневался

Aleh
14.07.2017
11:19:52
почему?

Google
Karl
14.07.2017
11:20:04
flow v50 - Added `$Values type` Еее, свершилось
а есть примеры как их во флоу юзать?

Vladimir
14.07.2017
11:20:12
Да просто факт, ничего особо полезного нельзя с ним делать

Дмитрий
14.07.2017
11:20:41
*по моему мнению

А так же $ElementType, тоже абсолютно бесполезен. Целый пакет бесполезных типов, кошмар

Admin
ERROR: S client not available

Vladimir
14.07.2017
11:23:21
Пример использования $Values в студию

Aleh
14.07.2017
11:24:23
я юзаю mapped types чтобы сделать поля типа имутабельными или чтобы сделать nullable

в тестах, чтобы описывать стабы

Дмитрий
14.07.2017
11:25:46
Пример использования $Values в студию
Твоё утверждение не является аксиомой и так же сомнительно без доказательств

Aleh
14.07.2017
11:26:11
синтаксис $Values еще не смотрел, поэтому не знаю как описать это

Karl
14.07.2017
11:26:34
я чето вообше синтаксис $Values не могу найти

даже в сорцах уже порылся, может плохо, конечно

Vladimir
14.07.2017
11:26:50
Окей, переформулирую для особо доебистых: мне лично неизвестны примеры использования $Values

Дмитрий
14.07.2017
11:27:40
Ну не прикидывайся валенком то

type DictProps = $Values<{ a: boolean, [key: string]: number }>; ('yo': DictProps); // Error: There is no property with the type of string. (123: DictProps); // OK: There is a dictionary value with the type of number. (true: DictProps); // OK: There is a property with the type of boolean.

Летучая
14.07.2017
11:28:12
$phlow

Vladimir
14.07.2017
11:28:14
Я имею в виду реальный пример из жизни

Дмитрий
14.07.2017
11:29:12
Я взял первый по порядку пример из тестов

Aleh
14.07.2017
11:29:21
это keyof и T[K]

Google
Vladimir
14.07.2017
11:31:09
Пока что я видел достаточно людей, радующийхся $Values (и некоторым другим фичам), но не понимающим как они работают

Karl
14.07.2017
11:31:51
хм, действительно $Values это не mapped type из ts (как я понял из примера)

Дмитрий
14.07.2017
11:32:20
Понимаешь, как бы так покорректнее выразиться, очередное "этовсёхуй" без доказательств слегка раздражает

Aleh
14.07.2017
11:33:25
https://www.typescriptlang.org/play/index.html#src=type%20%24Values%3CT%3E%20%3D%20T%5Bkeyof%20T%5D%0A%0Atype%20DictProps%20%3D%20%24Values%3C%7B%20a%3A%20boolean%2C%20b%3A%20number%20%7D%3E%0A%0A

Дмитрий
14.07.2017
11:33:27
Потому что не является хоть сколько нибудь полезным сообщением

Vladimir
14.07.2017
11:34:38
Потому что не является хоть сколько нибудь полезным сообщением
Не буду спорить. Но альтернатива только одна, кто-то приводит пример - я объясняю почему он не работает. Или выясняется что он работает и я не прав.

Дмитрий
14.07.2017
11:35:50
Блин, это так не работает. Ты как очевидно более осведомлённый в состоянии это объяснить без примеров или не в состоянии

Artur
14.07.2017
11:36:14
Я использую mappedTypes для описания форм. Как то так: interface Entity { a: string b: number } interface Form<T> { get<K extends keyof T>(prop: K): T[K] set<K extends keyof T>(prop: K, value: T[K]): this bind<K extends keyof T>(prop: K): {value: T[K], onChange: (newValue: T[K]) => void} }

Karl
14.07.2017
11:36:55
хм, ну это же не $Values, как написал товарищ выше

Vladimir
14.07.2017
11:37:16
Блин, это так не работает. Ты как очевидно более осведомлённый в состоянии это объяснить без примеров или не в состоянии
Для этого мне нужно идти искать, что люди пишут и хотят от $Values, чтобы приводить примеры, почему это не работает

Artur
14.07.2017
11:37:18
хм, ну это же не $Values, как написал товарищ выше
ну так я про mappedTypes, а говорят что $Values это тоже самое

Aleh
14.07.2017
11:37:31
вот как в тестах для стабов юзаю type Stubbed<T> = { [K in keyof T]: T[K] & Stub }

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