Причина, по которой Facebook Flow не имеет типа для объектов с нулевым прототипомJavascript

Форум по Javascript
Ответить
Anonymous
 Причина, по которой Facebook Flow не имеет типа для объектов с нулевым прототипом

Сообщение Anonymous »

Я работал над проектом, который использует https://flow.org/.

И меня немного озадачивает то, что в нем нет синтаксиса или типа для указания типа объектов с нулевым прототипом.

Код: Выделить всё

type SpecialObj = {[string]: mixed};
const o: SpecialObj = Object.create(null);
Это приводит к ошибке типа:

Код: Выделить всё

    Error ┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ main.js:7:30

Cannot assign Object.create(...) to o because Object.create [1] is incompatible with object
type [2]. [incompatible-type]

4│
5│ export function process(): mixed {
[2][1]  7│   const o: SpecialObj = Object.create(null);
Итак, мой вывод заключается в том, что Flow просто не поддерживает использование Object.create(null) и не имеет специального типа для таких значений.

Вопрос 1: прав ли я в этом? (Я проверял документацию, искал на сайте документации и т. д.).

И если мой вывод верен, то вопрос 2: кто-нибудь знает, почему?

Потому что, насколько я помню, TypeScript также не поддерживает нормальное использование Object.create(null) . Почему для таких значений нет специального типа? Не рекомендуется ли их использование?

Подробнее здесь: https://stackoverflow.com/questions/798 ... -prototype
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Javascript»