UNPKG

tslint-immutable

Version:

TSLint rules to disable mutation in TypeScript.

33 lines 1.44 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var utils = require("tsutils/typeguard/2.8"); var check_node_1 = require("./shared/check-node"); // tslint:disable-next-line:variable-name exports.Rule = check_node_1.createCheckNodeRule(checkNode, "Only the same kind of members allowed in interfaces."); function checkNode(node, _ctx) { var invalidNodes = []; if (utils.isInterfaceDeclaration(node)) { var prevMemberKind = undefined; var prevMemberType = undefined; for (var _i = 0, _a = node.members; _i < _a.length; _i++) { var member = _a[_i]; var memberKind = member.kind; var memberType = 0; // If it is a property declaration we need to check the type too if (utils.isPropertySignature(member) && member.type && utils.isFunctionTypeNode(member.type)) { // We only set memberType for Functions memberType = member.type.kind; } if (prevMemberKind !== undefined && (prevMemberKind !== memberKind || prevMemberType !== memberType)) { invalidNodes.push(check_node_1.createInvalidNode(member, [])); } prevMemberKind = memberKind; prevMemberType = memberType; } } return { invalidNodes: invalidNodes }; } //# sourceMappingURL=noMixedInterfaceRule.js.map