Typescript: Аргумент типа 'RegExpMatchArray' не может быть назначен параметру типа 'string'

У меня есть следующее выражение:

import { persistState } from 'redux-devtools';

const enhancer = compose(
  applyMiddleware(thunk, router, logger),
  DevTools.instrument(),
  persistState(
    window.location.href.match(/[?&]debug_session=([^&]+)\b/)
  )
);

Я получаю аргумент для сопоставления функции со следующей ошибкой

Аргумент типа 'RegExpMatchArray' нельзя назначить параметру типа 'строка'. Соответствует строке с регулярным выражением и возвращает массив, содержащий результаты этого поиска. (метод) String.match(regexp: RegExp): RegExpMatchArray (+1 перегрузка)

Определение взгляда в VSCode показывает:

match(regexp: string): RegExpMatchArray;
/**
  * Matches a string with a regular expression, and returns an array containing the results of that search.
  * @param regexp A regular expression object that contains the regular expression pattern and applicable flags.
  */
match(regexp: RegExp): RegExpMatchArray;

/**
  * Replaces text in a string, using a regular expression or search string.
  * @param searchValue A string that represents the regular expression.
  * @param replaceValue A string containing the text to replace for every successful match of searchValue in this string.
  */

На мой взгляд, аргумент имеет тип RegExp, как и параметр в определении. Тогда почему ошибка?

2 ответа

Решение

@NitzanTomer прав. Это не параметр соответствия функций, который имеет несоответствие типов. Вы, конечно, пытаетесь сохранить возвращаемое значение функции соответствия в строковой переменной или вернуть его из :string функция / передать его как string параметр.

Перезапуск сервера VS Code Typescript исправил это для меня

Другие вопросы по тегам