
Ҫѐҏӗѫӑ
11.01.2017
19:32:04
и они легальны

Vladimir
11.01.2017
19:32:19
но это необъект
и нельзя никак сделать так, чтобы это был только объект

Ҫѐҏӗѫӑ
11.01.2017
19:33:44
ну 1 хрен это не надо юзать

Google

Ҫѐҏӗѫӑ
11.01.2017
19:33:53
const a: {} = Object.create(null);
a.toString()
и все
^ легально
кидает ошибку в рантайме

Vladimir
11.01.2017
19:35:33
https://www.typescriptlang.org/play/index.html#src=function%20test(x%3A%20%7B%20toLowerCase%3A%20()%20%3D%3E%20string%20%7D%20%7C%20number)%20%7B%0D%0A%20%20%20%20if%20(typeof%20x%20%3D%3D%3D%20'object')%20%7B%0D%0A%20%20%20%20%20%20%20%20x.toLowerCase()%3B%0D%0A%20%20%20%20%7D%20else%20%7B%0D%0A%20%20%20%20%20%20%20%20x.toFixed()%3B%20%2F%2F%20runtime%20error%0D%0A%20%20%20%20%7D%0D%0A%7D%0D%0A%0D%0Atest('foo')%3B
Мое любимое

Ҫѐҏӗѫӑ
11.01.2017
19:39:20
ну это так, надуманно
у меня покруче
хотя 1 хрен
хотя нет
Object.create(null) можно было бы и детектить
литерал жи

Vladimir
11.01.2017
19:41:43
Его можно детектить, но для него нужен отдельный тип

Ҫѐҏӗѫӑ
11.01.2017
19:42:14
во флоу есть?

Google

Vladimir
11.01.2017
19:42:37
Нет

Ҫѐҏӗѫӑ
11.01.2017
19:43:19
ага, сейм шит https://flowtype.org/try/#0PTAEAEDMBsHsHcBQiDGsB2BnALqAhgFygDeAvqALygDyARgFYCmK2AdCgE6N7aMAU6AK7RoASgDcyPK2ywAytg4BLdAHM+o5EA
ну там есть {| ... |}
можно было бы как-то к нему приводить
кстати
а, не
чот можно было б ишью завести, но я хз что писать
в заголовке
https://flowtype.org/try/#0PTAEAEDMBsHsHcBQiDGsB2BnALqAhgFygDeAvqALygDyARgFYCmK2AdCgE6N7aMAU6AK7RoASgDcyPK2ywAytg4BLdAHM+oxNLjRKoAOQ79koA
?
короч вот чот набросал если что https://github.com/facebook/flow/issues/3177

Vladimir
11.01.2017
19:59:52
ну спорно
const a: {} = Object.create(null);
Вот это должно быть ошибкой
Все остальное нормально
https://flowtype.org/try/#0PTAEAEDMBsHsHcBQiDGsB2BnALqAhqALygDyARgFYCmK2AdCgE5V7ZUAU6ArtNAJQBuRHjrZYAZWyMAlugDm7QYiA

Ҫѐҏӗѫӑ
11.01.2017
20:01:21
второе - то же самое
ну мое в смысле
там же написано что константа

Vladimir
11.01.2017
20:02:04
не понял

Google

Ҫѐҏӗѫӑ
11.01.2017
20:02:07
и добавиться они туда должны только если я их завожу там или ассайню в прототип прототип объекта

Vladimir
11.01.2017
20:02:37
добавлять новые свойства в объекты вообще нельзя
так что в этом особенного ничего нет

Ҫѐҏӗѫӑ
11.01.2017
20:02:50
ну это другой баг)

Vladimir
11.01.2017
20:03:01
это не баг

Ҫѐҏӗѫӑ
11.01.2017
20:03:18
я там указал ишью другую. на ней лейбл баг

Vladimir
11.01.2017
20:04:13
Хз, я бы не сказал что это баг
Нельзя к объектам добавлять свойства

Ҫѐҏӗѫӑ
11.01.2017
20:04:32
я сказал бы

Vladimir
11.01.2017
20:04:38
Почему здесь должно быть можно

Ҫѐҏӗѫӑ
11.01.2017
20:04:44

Vladimir
11.01.2017
20:04:55
во Flow

Vladimir
11.01.2017
20:04:58
И в TS

Ҫѐҏӗѫӑ
11.01.2017
20:06:44
https://flowtype.org/try/#0PTAEAEDMBsHsHcBQiDGsB2BnALqAhgFygDeoc0A-ETgE4CW6A5qAL6gC8JLA3IngHTkOoAOTkR3UCFCYAFrACu0ACagARgFMyGxnmiIgA
но вообще да
в случае с обжект нулл чот хз
нет, с обжект нул явно баг
это ж хэш
он для того и нужен
когда мапов нет

Google

Ҫѐҏӗѫӑ
11.01.2017
20:08:26
либо extends null надо
чего флоу тоже не умеет вроде

Vladimir
11.01.2017
20:08:45
Мэп надо обявлять мэпом

Ҫѐҏӗѫӑ
11.01.2017
20:08:52
зависит
от окружения
если надо стринговые ключи, то это норм путь
особенно в в8

Vladimir
11.01.2017
20:09:32
причем здесть это

Ҫѐҏӗѫӑ
11.01.2017
20:09:45
при том, что для этого такие объекты и юзаются

Vladimir
11.01.2017
20:10:10
мэпы небезопасны

Admin
ERROR: S client not available

Vladimir
11.01.2017
20:10:17
поэтому их нужно явно объявлять
для Object.create(null) можно сделать специальную поддержку
но ее отстуствие - это не баг

Ҫѐҏӗѫӑ
11.01.2017
20:10:45
через обжект литерал?

Vladimir
11.01.2017
20:10:51
это отсутствие фичи

Ҫѐҏӗѫӑ
11.01.2017
20:11:22
без нее в8 умеет делать збс чотко

Vladimir
11.01.2017
20:11:51
да какая разница что в8 умеет

Ҫѐҏӗѫӑ
11.01.2017
20:12:10
он потому что если умеет, то для флоу это тоже не проблема

Google

Vladimir
11.01.2017
20:12:44
нет

Ҫѐҏӗѫӑ
11.01.2017
20:13:09
ну значит флоу такое же говно
как и тс

Vladimir
11.01.2017
20:13:17
нет

Ҫѐҏӗѫӑ
11.01.2017
20:13:19
поэтому тс лучше

Vladimir
11.01.2017
20:13:32
такого говна как тс больше нет

Ҫѐҏӗѫӑ
11.01.2017
20:13:40
THE shit

Vladimir
11.01.2017
20:13:46
а тс вообще не поддерживает Object.create
ему похуй

Ҫѐҏӗѫӑ
11.01.2017
20:14:03
у него классы есть

Vladimir
11.01.2017
20:14:19
збс

Ҫѐҏӗѫӑ
11.01.2017
20:14:22
да

Vladimir
11.01.2017
20:14:46
только они тоже через жопу работают

Anatoly
11.01.2017
20:44:55
На вопрос только никто не ответил )
<{},{}>

Ҫѐҏӗѫӑ
11.01.2017
20:46:01
ответ: это нелегальный снитаксис

Anatoly
11.01.2017
20:46:02
Зачем 2 литерала?
Легальный только <T> ?

Ҫѐҏӗѫӑ
11.01.2017
20:47:13
https://www.typescriptlang.org/play/index.html
есть плэйграунд для этого

Anatoly
11.01.2017
20:57:03
Я понимаю, но меня интересует больше природа и семантика подобного написания, а именно <x, x>, а не результат компиляции. Наверное лучше погуглить и почитать про это в c#/java etc, но вдруг кому-то не лень тут в двух словах это раписать )

Aleh
11.01.2017
20:57:56
зачем два типа указывать в <>? Ну есть пример с реакт компонентами
там есть тип пропсов и тип стейта