Мой файл .eslintrc.json выглядит так:
{
"rules": {
"no-redeclare": "off",
"@typescript-eslint/no-redeclare": [
"error",
{
"ignoreDeclarationMerge": true
}
]
}
}
У меня есть этот код (работает здесь):
import React from 'react';
namespace Foo {
// exported interface
export interface Props {
foo: string;
}
}
export const Foo: React.FC<Foo.Props> = ({ foo }) => {
return foo;
};
Когда код анализируется, он выдает следующую ошибку
'Foo' is already defined. 10:14 - 10:38
Согласно typescript-eslint docs, мне нужно отключить базовое правило (см. строку 3 файла конфигурации) и установить ignoreDeclarationMerge
на true
(см. строку 7 файла конфигурации).
Почему это все еще выдает ошибку?
Обновлено: обратите внимание, что это не вызывает ошибку, так как это function
, а не const
:
export function Foo({ foo }): React.FC<Foo.Props> {
return foo;
};
ignoreDeclarationMerge
работает только в следующих случаях:
интерфейс + интерфейс
пространство имен + пространство имен
класс + интерфейс
класс + пространство имен
класс + интерфейс + пространство имен
функция + пространство имен
перечисление + пространство имен
Это не будет работать для пространства имен + переменной
Также известен как «rtfm». Спасибо @Димава!