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, как и параметр в определении. Тогда почему ошибка?


person Kushagra Sharma    schedule 28.05.2016    source источник
comment
что ты делаешь с результатом матча?   -  person Nitzan Tomer    schedule 28.05.2016
comment
Предоставьте MCVE.   -  person Tamas Hegedus    schedule 28.05.2016


Ответы (2)


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

person Tamas Hegedus    schedule 28.05.2016
comment
Я думаю, это была проблема с VSCode intellisense. Глоток был только на аргументе, чтобы соответствовать, в то время как весь оператор window.location.href.match(/[?&]debug_session=([^&]+)\b/) должен был иметь глоток. Перезапуск VSCode исправил это. - person Kushagra Sharma; 30.05.2016
comment
Спасибо @KushagraSharma, перезапуск vscode тоже был моим решением. Вы знаете, сообщалось ли об этой ошибке? - person MaximeBernard; 06.07.2016
comment
@MaximeBernard Я не знаю, сообщалось ли о проблеме. - person Kushagra Sharma; 07.07.2016

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

person lockednlevered    schedule 18.07.2021