diff --git a/packages/compiler-cli/src/ngtsc/factories/src/host.ts b/packages/compiler-cli/src/ngtsc/factories/src/host.ts index f22b9abf9e..d2e0627c32 100644 --- a/packages/compiler-cli/src/ngtsc/factories/src/host.ts +++ b/packages/compiler-cli/src/ngtsc/factories/src/host.ts @@ -19,14 +19,19 @@ export class GeneratedFactoryHostWrapper implements ts.CompilerHost { private delegate: ts.CompilerHost, private generator: FactoryGenerator, private factoryToSourceMap: Map) { if (delegate.resolveTypeReferenceDirectives) { + // Backward compatibility with TypeScript 2.9 and older since return + // type has changed from (ts.ResolvedTypeReferenceDirective | undefined)[] + // to ts.ResolvedTypeReferenceDirective[] in Typescript 3.0 + type ts3ResolveTypeReferenceDirectives = (names: string[], containingFile: string) => + ts.ResolvedTypeReferenceDirective[]; this.resolveTypeReferenceDirectives = (names: string[], containingFile: string) => - delegate.resolveTypeReferenceDirectives !(names, containingFile); + (delegate.resolveTypeReferenceDirectives as ts3ResolveTypeReferenceDirectives) !( + names, containingFile); } } resolveTypeReferenceDirectives?: - (names: string[], - containingFile: string) => (ts.ResolvedTypeReferenceDirective | undefined)[]; + (names: string[], containingFile: string) => ts.ResolvedTypeReferenceDirective[]; getSourceFile( fileName: string, languageVersion: ts.ScriptTarget, diff --git a/packages/compiler-cli/src/transformers/compiler_host.ts b/packages/compiler-cli/src/transformers/compiler_host.ts index 218f3d6306..2cd882ca1e 100644 --- a/packages/compiler-cli/src/transformers/compiler_host.ts +++ b/packages/compiler-cli/src/transformers/compiler_host.ts @@ -79,8 +79,7 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHos // TODO(issue/24571): remove '!'. getDirectories !: (path: string) => string[]; resolveTypeReferenceDirectives?: - (names: string[], - containingFile: string) => (ts.ResolvedTypeReferenceDirective | undefined)[]; + (names: string[], containingFile: string) => ts.ResolvedTypeReferenceDirective[]; directoryExists?: (directoryName: string) => boolean; constructor( @@ -106,8 +105,14 @@ export class TsCompilerAotCompilerTypeCheckHostAdapter implements ts.CompilerHos this.getDefaultLibLocation = () => context.getDefaultLibLocation !(); } if (context.resolveTypeReferenceDirectives) { + // Backward compatibility with TypeScript 2.9 and older since return + // type has changed from (ts.ResolvedTypeReferenceDirective | undefined)[] + // to ts.ResolvedTypeReferenceDirective[] in Typescript 3.0 + type ts3ResolveTypeReferenceDirectives = (names: string[], containingFile: string) => + ts.ResolvedTypeReferenceDirective[]; this.resolveTypeReferenceDirectives = (names: string[], containingFile: string) => - context.resolveTypeReferenceDirectives !(names, containingFile); + (context.resolveTypeReferenceDirectives as ts3ResolveTypeReferenceDirectives) !( + names, containingFile); } if (context.trace) { this.trace = s => context.trace !(s);