
Mike
05.10.2017
19:54:05
Смотря что ты хочешь

Олег
05.10.2017
19:54:09
это разные типы

da horsie
05.10.2017
19:54:16

Дмитрий
05.10.2017
19:54:32

Google

da horsie
05.10.2017
19:54:33
что, как я понимаю, тоже самое что просто number с точки зрения TS

skycoder
05.10.2017
19:54:44
просто есть каноничное == null
это проверка на null и undefined
идеальный кейс когда ожидается наличие\отсутствие значение

Олег
05.10.2017
19:55:01
это не каноничная

Дмитрий
05.10.2017
19:55:25
довольно-таки каноничное

Олег
05.10.2017
19:55:32
== вообще нигде не канонично

Дмитрий
05.10.2017
19:55:40
ноуп

Олег
05.10.2017
19:56:04
йоуп

Дмитрий
05.10.2017
19:56:10
в том же еслинте в правиле, запрещающем использование ==, есть исключение специально для этого кейса
Потому что null ннжн

Олег
05.10.2017
19:56:54
есть конкретные типы

Дмитрий
05.10.2017
19:56:59
хуипы

Google

Дмитрий
05.10.2017
19:57:06
(да, я тоже юморист)

Олег
05.10.2017
19:57:08
ждать при сравнение с null что отбросит undefined
ну такое

skycoder
05.10.2017
19:57:23
такое, потому что == - нестрогая проверка
это рекомендованный способ

Дмитрий
05.10.2017
19:57:34

skycoder
05.10.2017
19:58:05
вот для других кейсов оправдан запрет, всех комбинаций нестрогих проверок сложность запомнить
но конкретно этот кейс хорош

Дмитрий
05.10.2017
19:58:45

skycoder
05.10.2017
20:00:07
альтернативы
// #1
function foo (x = null) {
// используем значение по умолчанию и не паримся о undefined
if (x === null) {} // но такое себе, мы можем забыть дать по умолчанию null, а привычка делать == null спасет нас на проде
}
// #2
if (x === null || x === undefined) {} // без комментариев просто

Дмитрий
05.10.2017
20:01:33
Боже, храни типизацию и strictNullCheck
или как оно там у нас называется

Олег
05.10.2017
20:01:53
оооочень сложна, эта же надо || и второе условие
if (!x) не?

skycoder
05.10.2017
20:02:32
а вот !x это _очень_ опасно

Олег
05.10.2017
20:03:34
ладно, ладно. давайте без срачей продолжать.
это вопрос про вкусовщину

skycoder
05.10.2017
20:03:43
потому что '' - это вполне себе объект, это данные, но будет false при приведении к boolean
это не вкусовщина, это просто уже не проверка на null и undefined, это вдогонку зацепит 0, возможно [], и ''
в этом весь смысл запары людей о == null и undefined

Дмитрий
05.10.2017
20:07:16

Google

Artur
05.10.2017
20:13:18

Дмитрий
05.10.2017
20:14:33
кому это придет в голову
впрочем, == null от этого тоже спасает

Олег
05.10.2017
20:15:34

da horsie
05.10.2017
20:15:39
а правильно я понимаю, что TS позволяет вернуть undefined из foo(): number?
или я флаг какой забыл установить?

Олег
05.10.2017
20:16:55

Artur
05.10.2017
20:17:12
это если аргумент так назвать
Не только https://stackoverflow.com/questions/44778687/why-inside-function-we-can-override-undefined-but-cant-in-window-object-in-js
Но да, это дичь

Олег
05.10.2017
20:17:32
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-0.html

Artur
05.10.2017
20:17:38
void 0 или ==null нравятся больше

da horsie
05.10.2017
20:17:46
strictNullChecks
точто, забыл. обычно еще какие-то два вместе с ним советуют, напомните, пожалуйста?

Дмитрий
05.10.2017
20:18:59

Artur
05.10.2017
20:19:00
Да просто strict

da horsie
05.10.2017
20:19:31
вах конфетка!
спасибо

Дмитрий
06.10.2017
01:53:58
Вот что называется "догматизм"

Алексей
06.10.2017
04:23:00

Google

andretshurotshka?❄️кде
06.10.2017
06:29:38
чет тихо

Dmitrii
06.10.2017
07:04:39

Алексей
06.10.2017
07:05:40
Например в lodash.isNil такое
Видели что у него под капотом? !== null ... я за lodash (и аналоги) но создавать метод для проверки на null и undefined кажется большим overkill

Aleh
06.10.2017
07:06:11
isEven

Wiggly
06.10.2017
07:18:26

andretshurotshka?❄️кде
06.10.2017
07:18:56
ну потому что point free

Алексей
06.10.2017
07:19:25

Aleh
06.10.2017
07:19:49
?

Vladimir
06.10.2017
07:20:46
Какая разница?
Это довольно частая проверка

Олег
06.10.2017
09:31:42

Adam
07.10.2017
15:21:52

Ivan
07.10.2017
15:32:21
да думаю одинаково. Просто html5 и C# фокусируются на немножко разных вещах
в html5 хочешь не хочешь, придётся разбираться как весь этот кошмар работает. А в Юнити полный plug and play :)

Igor
07.10.2017
15:38:24

Adam
07.10.2017
16:07:16

andretshurotshka?❄️кде
07.10.2017
16:07:36
>писать про ооп человеку с хаскеллом на аве

Google

Adam
07.10.2017
16:09:21
я давно уже понял, что здесь обсуждается, в основном, допустимо ли == или всё-таки === ?

Igor
07.10.2017
16:10:11
Ну не надо, я на работе ООП пишу.
Так то ООП можно и на es6, токо вот джиесеры не вкурсе про солид, cqs и тд и все равно пишут процедурно

Ivan
07.10.2017
16:24:35
э
эээ вообще странно что в этом чатике об этом разговор пошёл
может в html5gamedev переместите? :)

Adam
07.10.2017
16:25:52
так много информации поступает, что не успеваешь читать и приходиться скроллить?

Ivan
07.10.2017
16:59:14
@angmarr да я про то же - на JS и TS надо писать блин так чтобы можно было портировать в случае чего
вот кстати ядро тайпчекера в ts https://raw.githubusercontent.com/Microsoft/TypeScript/master/src/compiler/checker.ts