UNPKG

1.44 kBJavaScriptView Raw
1"use strict";
2Object.defineProperty(exports, "__esModule", { value: true });
3var utils = require("tsutils/typeguard/2.8");
4var check_node_1 = require("./shared/check-node");
5// tslint:disable-next-line:variable-name
6exports.Rule = check_node_1.createCheckNodeRule(checkNode, "Only the same kind of members allowed in interfaces.");
7function checkNode(node, _ctx) {
8 var invalidNodes = [];
9 if (utils.isInterfaceDeclaration(node)) {
10 var prevMemberKind = undefined;
11 var prevMemberType = undefined;
12 for (var _i = 0, _a = node.members; _i < _a.length; _i++) {
13 var member = _a[_i];
14 var memberKind = member.kind;
15 var memberType = 0;
16 // If it is a property declaration we need to check the type too
17 if (utils.isPropertySignature(member) &&
18 member.type &&
19 utils.isFunctionTypeNode(member.type)) {
20 // We only set memberType for Functions
21 memberType = member.type.kind;
22 }
23 if (prevMemberKind !== undefined &&
24 (prevMemberKind !== memberKind || prevMemberType !== memberType)) {
25 invalidNodes.push(check_node_1.createInvalidNode(member, []));
26 }
27 prevMemberKind = memberKind;
28 prevMemberType = memberType;
29 }
30 }
31 return { invalidNodes: invalidNodes };
32}
33//# sourceMappingURL=noMixedInterfaceRule.js.map
\No newline at end of file