Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

feat(typescript-estree): tighten prop name and destructure types#1346

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.

Already on GitHub?Sign in to your account

Merged
bradzacher merged 1 commit intomasterfromminor-cleanup
Dec 18, 2019
Merged
Show file tree
Hide file tree
Changes fromall commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -55,13 +55,13 @@ export default util.createRule({
case AST_NODE_TYPES.FunctionDeclaration:
return member.id && member.id.name;
case AST_NODE_TYPES.TSMethodSignature:
return util.getNameFromPropertyName(member.key);
return util.getNameFromMember(member, sourceCode);
case AST_NODE_TYPES.TSCallSignatureDeclaration:
return 'call';
case AST_NODE_TYPES.TSConstructSignatureDeclaration:
return 'new';
case AST_NODE_TYPES.MethodDefinition:
return util.getNameFromClassMember(member, sourceCode);
return util.getNameFromMember(member, sourceCode);
}

return null;
Expand Down
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -125,10 +125,7 @@ export default util.createRule<Options, MessageIds>({
break;
}

const methodName = util.getNameFromClassMember(
methodDefinition,
sourceCode,
);
const methodName = util.getNameFromMember(methodDefinition, sourceCode);

if (check === 'off' || ignoredMethodNames.has(methodName)) {
return;
Expand DownExpand Up@@ -163,7 +160,7 @@ export default util.createRule<Options, MessageIds>({
): void {
const nodeType = 'class property';

const propertyName = util.getNameFromPropertyName(classProperty.key);
const propertyName = util.getNameFromMember(classProperty, sourceCode);
if (
propCheck === 'no-public' &&
classProperty.accessibility === 'public'
Expand Down
2 changes: 1 addition & 1 deletionpackages/eslint-plugin/src/rules/member-naming.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -99,7 +99,7 @@ export default util.createRule<Options, MessageIds>({

validate(
node.key,
util.getNameFromClassMember(node, sourceCode),
util.getNameFromMember(node, sourceCode),
node.accessibility,
);
}
Expand Down
4 changes: 2 additions & 2 deletionspackages/eslint-plugin/src/rules/member-ordering.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -231,12 +231,12 @@ export default util.createRule<Options, MessageIds>({
case AST_NODE_TYPES.TSMethodSignature:
case AST_NODE_TYPES.TSAbstractClassProperty:
case AST_NODE_TYPES.ClassProperty:
return util.getNameFromPropertyName(node.key);
return util.getNameFromMember(node, sourceCode);
case AST_NODE_TYPES.TSAbstractMethodDefinition:
case AST_NODE_TYPES.MethodDefinition:
return node.kind === 'constructor'
? 'constructor'
: util.getNameFromClassMember(node, sourceCode);
: util.getNameFromMember(node, sourceCode);
case AST_NODE_TYPES.TSConstructSignatureDeclaration:
return 'new';
case AST_NODE_TYPES.TSIndexSignature:
Expand Down
63 changes: 30 additions & 33 deletionspackages/eslint-plugin/src/util/misc.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -48,29 +48,6 @@ type InferMessageIdsTypeFromRule<T> = T extends TSESLint.RuleModule<
? TMessageIds
: unknown;

/**
* Gets a string representation of the name of the index signature.
*/
export function getNameFromIndexSignature(
node: TSESTree.TSIndexSignature,
): string {
const propName: TSESTree.PropertyName | undefined = node.parameters.find(
(parameter: TSESTree.Parameter): parameter is TSESTree.Identifier =>
parameter.type === AST_NODE_TYPES.Identifier,
);
return propName ? getNameFromPropertyName(propName) : '(index signature)';
}

/**
* Gets a string name representation of the given PropertyName node
*/
function getNameFromPropertyName(propertyName: TSESTree.PropertyName): string {
if (propertyName.type === AST_NODE_TYPES.Identifier) {
return propertyName.name;
}
return `${propertyName.value}`;
}

/** Return true if both parameters are equal. */
type Equal<T> = (a: T, b: T) => boolean;

Expand DownExpand Up@@ -102,31 +79,51 @@ function findFirstResult<T, U>(
return undefined;
}

/**
* Gets a string representation of the name of the index signature.
*/
export function getNameFromIndexSignature(
node: TSESTree.TSIndexSignature,
): string {
const propName: TSESTree.PropertyName | undefined = node.parameters.find(
(parameter: TSESTree.Parameter): parameter is TSESTree.Identifier =>
parameter.type === AST_NODE_TYPES.Identifier,
);
return propName ? propName.name : '(index signature)';
}

/**
* Gets a string name representation of the name of the given MethodDefinition
* or ClassProperty node, with handling for computed property names.
*/
functiongetNameFromClassMember(
methodDefinition:
functiongetNameFromMember(
member:
| TSESTree.MethodDefinition
| TSESTree.TSMethodSignature
| TSESTree.TSAbstractMethodDefinition
| TSESTree.ClassProperty
| TSESTree.TSAbstractMethodDefinition,
| TSESTree.TSAbstractClassProperty
| TSESTree.Property
| TSESTree.TSPropertySignature,
sourceCode: TSESLint.SourceCode,
): string {
if (keyCanBeReadAsPropertyName(methodDefinition.key)) {
return getNameFromPropertyName(methodDefinition.key);
if (isLiteralOrIdentifier(member.key)) {
if (member.key.type === AST_NODE_TYPES.Identifier) {
return member.key.name;
}
return `${member.key.value}`;
}

return sourceCode.text.slice(...methodDefinition.key.range);
return sourceCode.text.slice(...member.key.range);
}

/**
* This covers both actual property names, as well as computed properties that are either
* an identifier or a literal at the top level.
*/
functionkeyCanBeReadAsPropertyName(
functionisLiteralOrIdentifier(
node: TSESTree.Expression,
): node is TSESTree.PropertyName {
): node is TSESTree.Literal | TSESTree.Identifier {
return (
node.type === AST_NODE_TYPES.Literal ||
node.type === AST_NODE_TYPES.Identifier
Expand All@@ -147,11 +144,11 @@ export {
Equal,
ExcludeKeys,
findFirstResult,
getNameFromClassMember,
getNameFromPropertyName,
getNameFromMember,
InferMessageIdsTypeFromRule,
InferOptionsTypeFromRule,
isDefinitionFile,
isLiteralOrIdentifier,
RequireKeys,
upperCaseFirst,
};
18 changes: 12 additions & 6 deletionspackages/typescript-estree/src/ts-estree/ts-estree.ts
View file
Open in desktop
Original file line numberDiff line numberDiff line change
Expand Up@@ -345,7 +345,6 @@ export type Modifier =
export type ObjectLiteralElementLike =
| MethodDefinition
| Property
| RestElement
| SpreadElement
| TSAbstractMethodDefinition;
export type Parameter =
Expand All@@ -355,6 +354,13 @@ export type Parameter =
| ObjectPattern
| Identifier
| TSParameterProperty;
export type DestructuringPattern =
| Identifier
| ObjectPattern
| ArrayPattern
| RestElement
| AssignmentPattern
| MemberExpression;
export type PrimaryExpression =
| ArrayExpression
| ArrayPattern
Expand All@@ -374,7 +380,7 @@ export type PrimaryExpression =
| TemplateLiteral
| ThisExpression
| TSNullKeyword;
export type PropertyName =Identifier | Literal;
export type PropertyName =Expression;
export type Statement =
| BlockStatement
| BreakStatement
Expand DownExpand Up@@ -509,7 +515,7 @@ interface LiteralBase extends BaseNode {
}

interface MethodDefinitionBase extends BaseNode {
key:Expression;
key:PropertyName;
value: FunctionExpression | TSEmptyBodyFunctionExpression;
computed: boolean;
static: boolean;
Expand DownExpand Up@@ -542,7 +548,7 @@ export interface ArrayExpression extends BaseNode {

export interface ArrayPattern extends BaseNode {
type: AST_NODE_TYPES.ArrayPattern;
elements:Expression[];
elements:DestructuringPattern[];
typeAnnotation?: TSTypeAnnotation;
optional?: boolean;
decorators?: Decorator[];
Expand DownExpand Up@@ -897,7 +903,7 @@ export interface ObjectExpression extends BaseNode {

export interface ObjectPattern extends BaseNode {
type: AST_NODE_TYPES.ObjectPattern;
properties:ObjectLiteralElementLike[];
properties:(Property | RestElement)[];
typeAnnotation?: TSTypeAnnotation;
optional?: boolean;
decorators?: Decorator[];
Expand All@@ -923,7 +929,7 @@ export interface Property extends BaseNode {

export interface RestElement extends BaseNode {
type: AST_NODE_TYPES.RestElement;
argument:BindingName | Expression | PropertyName;
argument:DestructuringPattern;
typeAnnotation?: TSTypeAnnotation;
optional?: boolean;
value?: AssignmentPattern;
Expand Down

[8]ページ先頭

©2009-2025 Movatter.jp