ban interface usage for component props and state
Summary: another eslint rule for flipper codebase Reviewed By: passy Differential Revision: D33917213 fbshipit-source-id: e60b867d359ef5b94a481edf0eda318ecff17eee
This commit is contained in:
committed by
Facebook GitHub Bot
parent
59b11c5f12
commit
f2abbf63db
@@ -22,6 +22,9 @@ import noTsFileExtension, {
|
||||
import noIPrefixInterfaces, {
|
||||
RULE_NAME as noIPrefixInterfacesRuleName,
|
||||
} from './rules/noIPrefixInterfaces';
|
||||
import noInterfaceProps, {
|
||||
RULE_NAME as noInterfacePropsRuleName,
|
||||
} from './rules/noInterfacePropsOrState';
|
||||
|
||||
module.exports = {
|
||||
rules: {
|
||||
@@ -30,5 +33,6 @@ module.exports = {
|
||||
[noConsoleErrorWithoutContextRuleName]: noConsoleErrorWithoutContext,
|
||||
[noTsFileExtensionRuleName]: noTsFileExtension,
|
||||
[noIPrefixInterfacesRuleName]: noIPrefixInterfaces,
|
||||
[noInterfacePropsRuleName]: noInterfaceProps,
|
||||
},
|
||||
};
|
||||
|
||||
@@ -0,0 +1,48 @@
|
||||
/**
|
||||
* Copyright (c) Meta Platforms, Inc. and affiliates.
|
||||
*
|
||||
* This source code is licensed under the MIT license found in the
|
||||
* LICENSE file in the root directory of this source tree.
|
||||
*
|
||||
* @format
|
||||
*/
|
||||
|
||||
import {createESLintRule} from '../utils/createEslintRule';
|
||||
|
||||
type Options = [];
|
||||
|
||||
export type MessageIds = 'noInterfacePropsOrState';
|
||||
export const RULE_NAME = 'no-interface-props-or-state';
|
||||
|
||||
export default createESLintRule<Options, MessageIds>({
|
||||
name: RULE_NAME,
|
||||
meta: {
|
||||
type: 'problem',
|
||||
docs: {
|
||||
description: 'Use type aliases for component props instead of interfaces',
|
||||
recommended: 'error',
|
||||
},
|
||||
schema: [],
|
||||
messages: {
|
||||
noInterfacePropsOrState:
|
||||
'Use type aliases for component props and state instead of interfaces',
|
||||
},
|
||||
},
|
||||
defaultOptions: [],
|
||||
create(context) {
|
||||
return {
|
||||
TSInterfaceDeclaration(node) {
|
||||
if (
|
||||
!(node.id.name.endsWith('Props') || node.id.name.endsWith('State'))
|
||||
) {
|
||||
return;
|
||||
}
|
||||
|
||||
context.report({
|
||||
node: node.id,
|
||||
messageId: 'noInterfacePropsOrState',
|
||||
});
|
||||
},
|
||||
};
|
||||
},
|
||||
});
|
||||
Reference in New Issue
Block a user