Microsoft/TypeScript

Noncrashing property access through non-null assertion operator should narrow that property to NonNullable

Ouverte

#15 655 ouverte le 8 mai 2017

 (11 commentaires) (1 réaction) (0 personne assignée)TypeScript (13 395 forks)batch import
BugDomain: check: Control FlowHelp Wanted

Métriques du dépôt

Stars
 (108 860 étoiles)
Métriques de merge PR
 (Métriques PR en attente)

Description

TypeScript Version: 2.3 (Playground)

Code

Using strictNullChecks.

interface Foo {
    optional?: number;
}

interface Bar {
    foo?: Foo;
}

function test(bar: Bar) {
    if (bar.foo!.optional) {
        let num: number = bar.foo.optional;
    }

    if (bar.foo && bar.foo.optional) {
        let num: number = bar.foo.optional;
    }
}

Expected behavior: No errors or warnings.

Actual behavior:

  • num in first if block is number | undefined
  • bar.foo in first if block can be undefined

skarmavbild 2017-05-08 kl 12 58 06

Guide contributeur