diff --git a/packages/compiler-cli/src/ngtsc/compiler_host.ts b/packages/compiler-cli/src/ngtsc/compiler_host.ts index 9246385e81..f40725e236 100644 --- a/packages/compiler-cli/src/ngtsc/compiler_host.ts +++ b/packages/compiler-cli/src/ngtsc/compiler_host.ts @@ -36,14 +36,19 @@ export interface CompilerHost extends ts.CompilerHost { export class NgtscCompilerHost implements CompilerHost { constructor(private delegate: ts.CompilerHost) { 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 f286f0c4b6..ec9494b9db 100644 --- a/packages/compiler-cli/src/transformers/compiler_host.ts +++ b/packages/compiler-cli/src/transformers/compiler_host.ts @@ -83,8 +83,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( @@ -110,8 +109,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);