@typescript_ru

Страница 409 из 669
Mike
23.11.2017
14:11:44
у нас тут в соседнем отделе на плюсах такие конструкции заворачивают

Aleh
23.11.2017
14:11:46
babel
ну кстати да)

Mike
23.11.2017
14:12:06
babel
а что бабель, у меня свои код трансформы есть, это не проблема. В языке бы из коробки

Google
Дмитрий
23.11.2017
14:12:18
Ну кстати вообще полнота для генерации реально не необходимое и даже не обязательное условие

Le
23.11.2017
14:12:28
typelevel-ts это пакет
тогда окэй, спс

Aleh
23.11.2017
14:12:29
так подожди, что хорошего дает тьюринг-комплит система типов?

Дмитрий
23.11.2017
14:12:31
У тебя есть коробка)

Mike
23.11.2017
14:13:24
Зачем?
я тайпскриптом один язык в другой компилю. Flash -> typescript. И компилятор ts использую как платформу, у него api для ast трансформов есть. Не сказать чтоб шибко удобное, но есть

Aleh
23.11.2017
14:14:08
какой ужас)
почему ужас?

Сергей
23.11.2017
14:14:09
мыло на шило

andretshurotshka?❄️кде
23.11.2017
14:14:11
gist.github.com
там же нет компилятора тс))

Сергей
23.11.2017
14:14:23
там же нет компилятора тс))
а это не код блэд это ссылка тогда goo.gl

Mike
23.11.2017
14:14:27
мыло на шило
а что делать, мыло протухло, а его много тонн

Google
Дмитрий
23.11.2017
14:14:57
Я просто не понимаю кейса "давайте сделаем хитровывернутые конструкции чтобы было похоже на настоящий язык" когда ты теперь и так можешь просто юзать код для генерации)

andretshurotshka?❄️кде
23.11.2017
14:16:43
идрис))

Ҫѐҏӗѫӑ
23.11.2017
14:27:55
мифический язык, на котором ничего нет

и вот этот интерпретатор — это ж ваще полный провал

зачем он там?

Mike
23.11.2017
14:31:49
чтобы метапрограммить, кодогенерировать и писать на этом же языке генерацию его самого, чтоб не извращаться как на плюсах. Ещё чтобы для заранее известных констант предпосчитать всё и тп

Ҫѐҏӗѫӑ
23.11.2017
14:32:11
это провал

Mike
23.11.2017
14:32:24
мифический язык, на котором ничего нет
ты ещё скажи что Александресу с Уолтером Брайтом лохи

Ҫѐҏӗѫӑ
23.11.2017
14:32:27
как оно работает? там интерпретатор или компиляция?

во время исполнения

ты ещё скажи что Александресу с Уолтером Брайтом лохи
они не лохи, но сделали никому ненужное, а как сейчас еще и выяснилось, — охеренно ацтойное говно

которое либо компили при исполнении, либо с недоинтерпретатором

Mike
23.11.2017
14:46:56
не хочешь - не ешь. Никто же не навязывает тебе такое делать

Ҫѐҏӗѫӑ
23.11.2017
15:02:22
но все мы знаем, что если есть возможность сделать говно, то кто-то его обязательно сделает

иначе бы нас в этом чате не было

Max
23.11.2017
15:02:44
пойду сделаю говно

Alex
23.11.2017
15:14:13
https://img-9gag-fun.9cache.com/photo/a1Kgv56_700b.jpg

Le
23.11.2017
15:48:46
export type Optional<O, K extends keyof O> = Pick<O, Omit<keyof O, K>> & Partial<Pick<O, K>>;

Google
Le
23.11.2017
15:48:49
уфффффф

черная магия

import { ObjectOverwrite as Overwrite, StringOmit as Omit } from 'typelevel-ts'; export type Optional<O, K extends keyof O> = Pick<O, Omit<keyof O, K>> & Partial<Pick<O, K>>; export type OptionalCommandInfo = Partial<Overwrite<CommandInfo, { args: Optional<ArgumentInfo, 'prompt'>[]; }>>;

andretshurotshka?❄️кде
23.11.2017
16:00:33
эт че

Le
23.11.2017
16:01:08
это мне надо было сделать одну пропертю опциональной в ArgumentInfo

пришлось магию осваивать ?

andretshurotshka?❄️кде
23.11.2017
16:01:44
))

Le
23.11.2017
16:02:35
ну и в CommandInfo опциональным вообще всё

Artur
23.11.2017
16:05:22
Ребза, привет. А есть способ сделать nullable не nullable? Пример: type Indexed<T = {}> = {[key: string]: T} type Extract<T extends Indexed, K extends string> = { data: T[K] } // ... interface Foo { bar: {baz: number} | null } type ExtractedBar = Extract<Foo, 'bar'> // type null is not assignable to type {}

Не хочется потом использовать что-то вроде const bar = this.data! // ExtractedBar

Дмитрий
23.11.2017
16:07:55
Через Maybe<T> работать

Aleh
23.11.2017
16:09:27
Через Maybe<T> работать
не поможет же

Дмитрий
23.11.2017
16:09:42
не поможет же
С чего это?

Aleh
23.11.2017
16:09:48
а каким образом поможет?

Artur
23.11.2017
16:09:50
Ну как бы да, у меня просто механизм который чекает структуру перед тем как передать дальше

Дмитрий
23.11.2017
16:09:50
Он именно для этого и предназначен

Artur
23.11.2017
16:09:59
А вот дальше она должна быть не nullable

На счет maybe - не получится

Дмитрий
23.11.2017
16:10:33
fromNullable(value) .map( safeType => )

Artur
23.11.2017
16:10:36
Это GraphQL сгенерированные типы

Google
Aleh
23.11.2017
16:10:49
fromNullable(value) .map( safeType => )
так тип ж нужен)

Дмитрий
23.11.2017
16:10:54
Аа, ну там свои приколюхи

Artur
23.11.2017
16:11:08
Вида type TypeName = { ns1: { ns2: struct... } }

Иногда бывает, что ns2: {...} | null

Дмитрий
23.11.2017
16:11:49
так тип ж нужен)
fromNullable(x: T | null | void): Maybe<T>

Aleh
23.11.2017
16:12:02
у него есть Maybe<T>, а нужен T

Сергей
23.11.2017
16:12:12
fromNullable(value) .map( safeType => )
напомни пожалуйста, где взять хорошую реализацию maybe?

Artur
23.11.2017
16:12:12
Может я не догоняю, но да, мне нужно обратное от Maybe

Admin
ERROR: S client not available

Artur
23.11.2017
16:12:15
Sure<T>

Сергей
23.11.2017
16:12:26
Sure<T>
Just<T>

Artur
23.11.2017
16:12:59
AreYouSure<T>

Причем для const foo = this.data! можно хотя бы так сделать, а для типа type Foo = Maybe<Foo>! не сделаешь

Дмитрий
23.11.2017
16:15:16
Может я не догоняю, но да, мне нужно обратное от Maybe
Нет, Maybe<T> — это на самом деле структура которая имеет два типа (даже класса) type Maybe<T> = Just<T> | Nothing<T> И фича в том что применение функции fromNullable делит данные на две категории, оставляя внутри .map только безопасные для использования значения

Это для любого типа унифицированная идея

У тебя просто по определению в map не будет нуллов

напомни пожалуйста, где взять хорошую реализацию maybe?
Я свою написал https://github.com/zerobias/apropos/blob/develop/packages/maybe/src/index.h.js В этом на самом деле ничего сложного нет

Artur
23.11.2017
16:17:23
Хм, наверное я тупой, но не очень понимаю как это применить в рамках react компонента

Сергей
23.11.2017
16:18:10
Я свою написал https://github.com/zerobias/apropos/blob/develop/packages/maybe/src/index.h.js В этом на самом деле ничего сложного нет
понимаю, но хочется реюзать везде одинаковую стандартную реализацию

Дмитрий
23.11.2017
16:18:24
Вот поэтому я это и написал

Google
Сергей
23.11.2017
16:18:36
оо

а @apropos/maybe публичен?

классно, спасибо!!!

Дмитрий
23.11.2017
16:19:31
Да, плюс я через основной неймспейс юзаю 'apropos'

Сергей
23.11.2017
16:19:55
о

core

тоже так сделал у себя)

Дмитрий
23.11.2017
16:21:15
Как минимум все остальные упускают из вида главное — это два простых типа одновременно, ввиду чего меня прям коробило видеть реализации Maybe с проверками isJust() в каждом методе :( А у меня в о многих случаях объекты проходят bypass, и получается максимально дешёвая структура, просто объект { value }

Дмитрий
23.11.2017
16:22:15
Сергей
23.11.2017
16:22:43


Дмитрий
23.11.2017
16:23:12
сделать полиморфную структуру без полиморфизма ?
Я просто решил что раз кода немного, то нет смысла лениться и расписывал каждый кейс дататайпа отдельно

Aleh
23.11.2017
16:23:42
ну если их много и дублируются, можно всегда сделать третий тайп, в котором общие вещи лежат)

Дмитрий
23.11.2017
16:24:15
Здесь декораторы юзаются потому что формально не меняют тип класса. Это просто вызовы интеропа с системой типов sanctuary и fantasy-land

ну если их много и дублируются, можно всегда сделать третий тайп, в котором общие вещи лежат)
Да,, я сделал его, там toString() лежит) Туи как раз таки такая ситуация, что эти типы практически везде полностью зеркальны (что логично, раз они отражают значение и его отсутствие)

Ввиду чего нет смысла экономить на спичках и пытаться обобщить их, лучше уже с их помощью обобщения делать)

Artur
23.11.2017
16:27:17
Посмотрел, не понял как это в моем случае поможет.

Евгений
24.11.2017
06:32:34
Ребят, уже писал по поводу яндекс карты. У меня тут неловкий вопрос. Как правильно подключить @types/**** чтобы это потом вошло в релизную сборку. Ибо в отладке у меня все нормально работает, но когда деплою, не находится этот модуль

то есть по сути в релизной сборке не видны декларации

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