Refactored getSupportedExtension to only copy array when necessary

This commit is contained in:
Armando Aguirre
2018-04-16 13:36:03 -07:00
parent 50eb512566
commit 2f7e0dc5dd

View File

@@ -2668,15 +2668,16 @@ namespace ts {
export function getSupportedExtensions(options?: CompilerOptions, extraFileExtensions?: ReadonlyArray<FileExtensionInfo>): ReadonlyArray<string> {
const needJsExtensions = options && options.allowJs;
let extensions: string[] = needJsExtensions ? [...allSupportedExtensions] : [...supportedTypeScriptExtensions];
if (extraFileExtensions) {
extensions = [
...extensions,
...extraFileExtensions.filter(x => x.scriptKind === ScriptKind.Deferred || needJsExtensions && isJavaScriptLike(x.scriptKind)).map(x => x.extension),
];
if (!extraFileExtensions || extraFileExtensions.length === 0) {
return needJsExtensions ? allSupportedExtensions : supportedTypeScriptExtensions;
}
const extensions = [
...needJsExtensions ? allSupportedExtensions : supportedTypeScriptExtensions,
...extraFileExtensions.filter(x => x.scriptKind === ScriptKind.Deferred || needJsExtensions && isJavaScriptLike(x.scriptKind)).map(x => x.extension)
];
return deduplicate(extensions, equateStringsCaseSensitive, compareStringsCaseSensitive);
}