Ответы пользователя по тегу Redux
  • Почему typescript считает, что свойств data и error, от rtk query из redux toolkit, не существуют?

    @true_k
    frontend developer
    Тип возвращаемого значения функцией linkShortener определяет два разных результата работы функции. Typescript не знает с чем мы работаем. С объектом в котором data или с объектом в котором error. По этому нам самим нужно сузить тип, в TS это называется Narrowing https://www.typescriptlang.org/docs/handbook/2/nar.... Если в кратце то тебе нужно убедится что error или data присутствуют в объекте.
    const linkShortenerHandler = () => {
        linkShortener(url).then(res => {
          if ("error" in res.error && res.error) {
            if (res.error.data) {
              setError(res.error.data)
            } else if (res.error.message) {
              setError(res.error.message)
            }
          } else if ("data" in res.data && res.data) {
            setResponseContent(res.data)
          }
        })
      }

    Нужно учесть что конструкция "bar" in foo возвращает true в случае если свойство существует в объекте игнорируя его значение.
    const foo = {
      bar: "some value",
      bar1: null,
      bar2: undefined,
    }
    
    console.log("bar" in foo) // true
    console.log("bar1" in foo) // true
    console.log("bar2" in foo) //true
    console.log("bar3" in foo) //false
    Ответ написан