Merge pull request #17079 from Microsoft/noTypeArgsSum

Declare 'sum' so that it doesn't require type arguments.
This commit is contained in:
Daniel Rosenwasser
2017-07-12 00:09:58 -07:00
committed by GitHub
2 changed files with 6 additions and 5 deletions
+3 -3
View File
@@ -83,9 +83,9 @@ namespace ts {
// extra cost of calling `getParseTreeNode` when calling these functions from inside the
// checker.
const checker: TypeChecker = {
getNodeCount: () => sum<"nodeCount">(host.getSourceFiles(), "nodeCount"),
getIdentifierCount: () => sum<"identifierCount">(host.getSourceFiles(), "identifierCount"),
getSymbolCount: () => sum<"symbolCount">(host.getSourceFiles(), "symbolCount") + symbolCount,
getNodeCount: () => sum(host.getSourceFiles(), "nodeCount"),
getIdentifierCount: () => sum(host.getSourceFiles(), "identifierCount"),
getSymbolCount: () => sum(host.getSourceFiles(), "symbolCount") + symbolCount,
getTypeCount: () => typeCount,
isUndefinedSymbol: symbol => symbol === undefinedSymbol,
isArgumentsSymbol: symbol => symbol === argumentsSymbol,
+3 -2
View File
@@ -710,10 +710,11 @@ namespace ts {
return result;
}
export function sum<K extends string>(array: { [x in K]: number }[], prop: K): number {
export function sum<T extends Record<K, number>, K extends string>(array: T[], prop: K): number {
let result = 0;
for (const v of array) {
result += v[prop];
// Note: we need the following type assertion because of GH #17069
result += v[prop] as number;
}
return result;
}