Skip to content

Arguments of typeof are not type-checked #4034

@fingerartur

Description

@fingerartur

Arguments of typeof are not type-checked.

/**
 * @type {{ id: string }}
 */
const data = { id: "123" }
const x = data.somethingMadeUp  // type-checked
// WARNING - [JSC_INEXISTENT_PROPERTY] Property somethingMadeUp never defined on data

const x = data.somethingMadeUp + 1 // type-checked, same warning

const y = typeof data.somethingMadeUp // not type-checked, no warning

Compiler Version: v20221102

Build command:

java -jar ./scripts/closureCompiler.jar \
  --entry_point=./src/js/index.js \
  --js=./src/**.js \
  --dependency_mode=PRUNE \
  --warning_level=VERBOSE \
  --js_output_file=./dist/bundle.js \
  --module_resolution=WEBPACK \
  --compilation_level=ADVANCED \
  --jscomp_error=checkDebuggerStatement \
  --jscomp_error=unusedLocalVariables \
  --jscomp_error=reportUnknownTypes \
  --jscomp_error=strictCheckTypes;

Metadata

Metadata

Assignees

No one assigned

    Labels

    triage-doneHas been reviewed by someone on triage rotation.

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions