From 0aa2c48ee3e243e196f3d36150cf8769c3f95ab3 Mon Sep 17 00:00:00 2001 From: Jake Bailey <5341706+jakebailey@users.noreply.github.com> Date: Tue, 21 Nov 2023 11:40:31 -0800 Subject: [PATCH] Make our dts files compile when exactOptionalPropertyTypes is enabled downstream (#56489) --- src/compiler/types.ts | 2 +- src/server/project.ts | 2 +- src/services/types.ts | 8 ++++---- tests/baselines/reference/api/typescript.d.ts | 2 +- tests/cases/compiler/APILibCheck.ts | 1 + 5 files changed, 8 insertions(+), 7 deletions(-) diff --git a/src/compiler/types.ts b/src/compiler/types.ts index d96277b9360..927673c5198 100644 --- a/src/compiler/types.ts +++ b/src/compiler/types.ts @@ -7403,7 +7403,7 @@ export interface CommandLineOptionBase { isFilePath?: boolean; // True if option value is a path or fileName shortName?: string; // A short mnemonic for convenience - for instance, 'h' can be used in place of 'help' description?: DiagnosticMessage; // The message describing what the command line switch does. - defaultValueDescription?: string | number | boolean | DiagnosticMessage; // The message describing what the dafault value is. string type is prepared for fixed chosen like "false" which do not need I18n. + defaultValueDescription?: string | number | boolean | DiagnosticMessage | undefined; // The message describing what the dafault value is. string type is prepared for fixed chosen like "false" which do not need I18n. paramType?: DiagnosticMessage; // The name to be used for a non-boolean option's parameter isTSConfigOnly?: boolean; // True if option can only be specified via tsconfig.json file isCommandLineOnly?: boolean; diff --git a/src/server/project.ts b/src/server/project.ts index d0cf5f2c321..2fb0b090dd4 100644 --- a/src/server/project.ts +++ b/src/server/project.ts @@ -347,7 +347,7 @@ export abstract class Project implements LanguageServiceHost, ModuleResolutionHo readonly realpath?: (path: string) => string; /** @internal */ - hasInvalidatedResolutions: HasInvalidatedResolutions | undefined; + hasInvalidatedResolutions?: HasInvalidatedResolutions | undefined; /** @internal */ hasInvalidatedLibResolutions: HasInvalidatedLibResolutions | undefined; diff --git a/src/services/types.ts b/src/services/types.ts index ef0315b557c..cfa61dc9195 100644 --- a/src/services/types.ts +++ b/src/services/types.ts @@ -340,7 +340,7 @@ export interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalR */ readDirectory?(path: string, extensions?: readonly string[], exclude?: readonly string[], include?: readonly string[], depth?: number): string[]; realpath?(path: string): string; - /** @internal */ createHash?(data: string): string; + /** @internal */ createHash?: ((data: string) => string) | undefined; /* * Unlike `realpath and `readDirectory`, `readFile` and `fileExists` are now _required_ @@ -393,9 +393,9 @@ export interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalR * If provided along with custom resolveLibrary, used to determine if we should redo library resolutions * @internal */ - hasInvalidatedLibResolutions?(libFileName: string): boolean; + hasInvalidatedLibResolutions?: ((libFileName: string) => boolean) | undefined; - /** @internal */ hasInvalidatedResolutions?: HasInvalidatedResolutions; + /** @internal */ hasInvalidatedResolutions?: HasInvalidatedResolutions | undefined; /** @internal */ hasChangedAutomaticTypeDirectiveNames?: HasChangedAutomaticTypeDirectiveNames; /** @internal */ getGlobalTypingsCacheLocation?(): string | undefined; /** @internal */ getSymlinkCache?(files?: readonly SourceFile[]): SymlinkCache; @@ -432,7 +432,7 @@ export interface LanguageServiceHost extends GetEffectiveTypeRootsHost, MinimalR /** @internal */ onReleaseParsedCommandLine?(configFileName: string, oldResolvedRef: ResolvedProjectReference | undefined, optionOptions: CompilerOptions): void; /** @internal */ getIncompleteCompletionsCache?(): IncompleteCompletionsCache; - jsDocParsingMode?: JSDocParsingMode; + jsDocParsingMode?: JSDocParsingMode | undefined; } /** @internal */ diff --git a/tests/baselines/reference/api/typescript.d.ts b/tests/baselines/reference/api/typescript.d.ts index 7135bb78633..481cde26dfc 100644 --- a/tests/baselines/reference/api/typescript.d.ts +++ b/tests/baselines/reference/api/typescript.d.ts @@ -10420,7 +10420,7 @@ declare namespace ts { installPackage?(options: InstallPackageOptions): Promise; writeFile?(fileName: string, content: string): void; getParsedCommandLine?(fileName: string): ParsedCommandLine | undefined; - jsDocParsingMode?: JSDocParsingMode; + jsDocParsingMode?: JSDocParsingMode | undefined; } type WithMetadata = T & { metadata?: unknown; diff --git a/tests/cases/compiler/APILibCheck.ts b/tests/cases/compiler/APILibCheck.ts index 674c2f280a1..38821a58b0b 100644 --- a/tests/cases/compiler/APILibCheck.ts +++ b/tests/cases/compiler/APILibCheck.ts @@ -2,6 +2,7 @@ // @noImplicitAny: true // @strictNullChecks: true // @lib: es2018 +// @exactOptionalPropertyTypes: true // @filename: node_modules/typescript/package.json {