mirror of
https://github.com/microsoft/TypeScript.git
synced 2026-02-15 03:23:08 -06:00
Rewrite getPropFromRaw slightly to surface T in the parameters (#53301)
This commit is contained in:
parent
716b592e55
commit
d458e30a06
@ -29,7 +29,6 @@ import {
|
||||
emptyArray,
|
||||
endsWith,
|
||||
ensureTrailingDirectorySeparator,
|
||||
every,
|
||||
Expression,
|
||||
extend,
|
||||
Extension,
|
||||
@ -2974,7 +2973,7 @@ function parseJsonConfigFileContentWorker(
|
||||
};
|
||||
|
||||
function getConfigFileSpecs(): ConfigFileSpecs {
|
||||
const referencesOfRaw = getPropFromRaw<ProjectReference>("references", element => typeof element === "object", "object");
|
||||
const referencesOfRaw = getPropFromRaw("references", (element): element is ProjectReference => !!element && typeof element === "object", "object");
|
||||
const filesSpecs = toPropValue(getSpecsFromRaw("files"));
|
||||
if (filesSpecs) {
|
||||
const hasZeroOrNoReferences = referencesOfRaw === "no-prop" || isArray(referencesOfRaw) && referencesOfRaw.length === 0;
|
||||
@ -3049,7 +3048,7 @@ function parseJsonConfigFileContentWorker(
|
||||
|
||||
function getProjectReferences(basePath: string): readonly ProjectReference[] | undefined {
|
||||
let projectReferences: ProjectReference[] | undefined;
|
||||
const referencesOfRaw = getPropFromRaw<ProjectReference>("references", element => typeof element === "object", "object");
|
||||
const referencesOfRaw = getPropFromRaw("references", (element): element is ProjectReference => !!element && typeof element === "object", "object");
|
||||
if (isArray(referencesOfRaw)) {
|
||||
for (const ref of referencesOfRaw) {
|
||||
if (typeof ref.path !== "string") {
|
||||
@ -3077,11 +3076,12 @@ function parseJsonConfigFileContentWorker(
|
||||
return getPropFromRaw(prop, isString, "string");
|
||||
}
|
||||
|
||||
function getPropFromRaw<T>(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => boolean, elementTypeName: string): PropOfRaw<T> {
|
||||
function getPropFromRaw<T>(prop: "files" | "include" | "exclude" | "references", validateElement: (value: unknown) => value is T, elementTypeName: string): PropOfRaw<T> {
|
||||
if (hasProperty(raw, prop) && !isNullOrUndefined(raw[prop])) {
|
||||
if (isArray(raw[prop])) {
|
||||
const result = raw[prop] as T[];
|
||||
if (!sourceFile && !every(result, validateElement)) {
|
||||
const value = raw[prop];
|
||||
if (isArray(value)) {
|
||||
const result = filter(value, validateElement);
|
||||
if (!sourceFile && result.length !== value.length) {
|
||||
errors.push(createCompilerDiagnostic(Diagnostics.Compiler_option_0_requires_a_value_of_type_1, prop, elementTypeName));
|
||||
}
|
||||
return result;
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user