
Сергей
14.06.2018
14:18:29

Denis
14.06.2018
14:19:26
Когда они хуевый дизайн

Сергей
14.06.2018
14:19:34

Google

Denis
14.06.2018
14:19:36
Пытаются пофиксить
Усложнениями

Anton
14.06.2018
14:19:55

Сергей
14.06.2018
14:20:39

kana
14.06.2018
14:22:37
never нужен, это важно
any нужен (в случае js)
какой-то аналог mixed (unknown?) нужен, так как это не any
void это же просто null | undefined? тоже нужен

Сергей
14.06.2018
14:22:50

Anton
14.06.2018
14:23:12

Сергей
14.06.2018
14:23:14
потом открываешь любой другой язык и всё вместе не нужно

Vladimir
14.06.2018
14:23:48
Там есть все то же самое

Aleh
14.06.2018
14:23:54

Сергей
14.06.2018
14:24:05

Google

Сергей
14.06.2018
14:24:33
потом ситуация с infer тоже очень странная

Vladimir
14.06.2018
14:24:37
never это empty

kana
14.06.2018
14:24:39
хаскель:
- есть never
- есть mixed/unknown через Typeable
- для void это вроде как просто unit
- any нет (ну хотя вроде есть, но я не использовал и думаю это будет тот же mixed)

Vladimir
14.06.2018
14:24:46
unknown это mixed
any есть, void есть

Сергей
14.06.2018
14:25:02

kana
14.06.2018
14:25:04
flow:
- есть never
- есть unknown
- есть void
- есть any

Aleh
14.06.2018
14:25:25

Сергей
14.06.2018
14:25:40

Aleh
14.06.2018
14:26:47
зарезервированный тип, как и везде)

Сергей
14.06.2018
14:26:47

Aleh
14.06.2018
14:27:09
empty
never это empty

kana
14.06.2018
14:27:36

Сергей
14.06.2018
14:28:08
бляяя

kana
14.06.2018
14:28:19
empty является одним из ключевых типов в принципе, на его основе все остальные строятся

Сергей
14.06.2018
14:28:29

Aleh
14.06.2018
14:28:43
это юнит типа

Сергей
14.06.2018
14:28:49
короч я понял)
типизация в жс это бессмысленная вещь

kana
14.06.2018
14:28:50
все типы это есть перечисления (сумма) возможных литералов, empty в это включен

Google

kana
14.06.2018
14:29:01
поэтому если мы все кейсы рассмотрим
то останется только empty

Сергей
14.06.2018
14:29:07

kana
14.06.2018
14:29:13
поэтому он и работает в switch default

Сергей
14.06.2018
14:29:16
да
я понял
но блядь об этом забыл
а почему в тс never назвали?
?
и unknown?
в чем логика?

kana
14.06.2018
14:31:17
never потому что у этого типа НИКОГДА не будет значения, мы никогда не сможем создать терм типа never, никогда не сможем его передать, никогда не сможем с ним работать
самое популярное название (вне жс) этого типа Void
но в жс (и в еще многих языках) void-ом почему-то называют Unit

Сергей
14.06.2018
14:31:48

kana
14.06.2018
14:31:49
и unknown?
как и mixed. Это значит, что у терма есть четкий тип (это не any, когда типа нет), просто мы его не знаем, нужно матчить

Сергей
14.06.2018
14:32:11

kana
14.06.2018
14:32:48
нет, он нам неизвестен, наоборот. Смешанный и значит, что он есть, но неизвестно какой, без рантайм матча никуда

Сергей
14.06.2018
14:32:50

kana
14.06.2018
14:33:03
ну тут не тс, в сишке тоже void = unit из теории
древний диснейминг

Google

Сергей
14.06.2018
14:33:24
бля

Eugene
14.06.2018
14:33:44
дичь

Сергей
14.06.2018
14:34:08
покажи мне кейс, где void и never имеют разницу

George
14.06.2018
14:34:18
когда паттерн матчинг в тс завезут?

Сергей
14.06.2018
14:34:21
лол

George
14.06.2018
14:34:50

Aleh
14.06.2018
14:35:03
или throw внутри

Сергей
14.06.2018
14:35:07

George
14.06.2018
14:35:22
ну вот и разница
вернуть ничего или не вернуть ничего

Aleh
14.06.2018
14:35:33

Сергей
14.06.2018
14:35:50
охуеть

kana
14.06.2018
14:36:03
// @flow
function f(x: mixed) {
// тут не известен
if (typeof x === "number") {
// тут известен
console.log(x);
}
}
function g(x: any) {
// тут не известен
if (typeof x === "number") {
// тут все еще неизвестен, потому что типа в принципе нет у переменной
console.log(x);
}
}

Сергей
14.06.2018
14:36:03
в жс разницы 0

Aleh
14.06.2018
14:36:08
@kana_sama ж правильно описал

Сергей
14.06.2018
14:36:11
вернет ничего или не вернет ничего
какая нахуй разница в жс

Google

Сергей
14.06.2018
14:36:20
один хер undefined

kana
14.06.2018
14:36:21
в тс я так понимаю unknown то же самое, что и mixed - не узнаем пока не сматчим

Aleh
14.06.2018
14:36:40
один хер undefined
нет, в случае never у тебя никогда не будет значения, даже undefined не будет

Сергей
14.06.2018
14:36:48

kana
14.06.2018
14:36:51

Aleh
14.06.2018
14:36:56
const a = f()

Сергей
14.06.2018
14:37:01

kana
14.06.2018
14:37:10
f(x: never): int обозначает функцию, которую невозможно вызвать

Aleh
14.06.2018
14:37:13
в случае void у a будет значение, в случае never никогда присвоения не произойдет

Сергей
14.06.2018
14:37:18
в жс будет

Aleh
14.06.2018
14:37:26
нет, не будет

Сергей
14.06.2018
14:37:30
бля
да ну нахуй

Aleh
14.06.2018
14:37:39
function f() { throw new Error }

Сергей
14.06.2018
14:37:45
эээ

kana
14.06.2018
14:38:06
присвоения не будет
потому что упадет еще до этого