Как проверить, является ли параметр функции классом схемы Normalizr? - PullRequest
0 голосов
/ 06 мая 2019

Есть ли способ проверить, во время выполнения , является ли параметр функции (или нет) классом схемы Normalizr? Может быть любого типа: сущность, массив, объект и т. Д.

Например:

function processTMDBRespose(response, schema) {
  // if 'schema' param is not a normalizr schema, throw!

  // some code
}

1 Ответ

0 голосов
/ 07 мая 2019

Вы можете и не можете делать то, что ищете.

Если вы пишете себе правило lint, которое позволяет создавать схемы только из классов нормализатора, например new schema.Array(), и запрещает использование сокращения [], то вы можете проверить, используя instanceof:

if (
    mySchema instanceof schema.Array || 
    mySchema instanceof schema.Entity ||
    mySchema instanceof schema.Object ||
    mySchema instanceof schema.Union ||
    mySchema instanceof schema.Values
) { 
    // your  code
} else {
    throw new Error('mySchema is not a schema');
}

Однако, если вы используете сокращение, любой массив [] или простой объект {} также является допустимой схемой для schema.Array и schema.Object соответственно. Это гораздо сложнее проверить, потому что почти все в JavaScript typeof Object (например, null)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...