== Why is this an issue? The TypeScript compiler automatically casts a variable to the relevant type inside conditionals where it is possible to infer the type (because ``++typeof++``, ``++instanceof++``, etc was used). This compiler feature makes casts and not-``++null++`` assertions unnecessary. === Noncompliant code example [source,javascript] ---- function getName(x?: string | UserName) { if (x) { console.log("Getting name for " + x!); // Noncompliant if (typeof x === "string") return (x as string); // Noncompliant else return (x as UserName).name; // Noncompliant } return "NoName"; } ---- === Compliant solution [source,javascript] ---- function getName(x?: string | UserName) { if (x) { console.log("Getting name for " + x); if (typeof x === "string") return x; else return x.name; } return "NoName"; } ---- ifdef::env-github,rspecator-view[] ''' == Implementation Specification (visible only on this page) === Message Remove this unnecessary [cast|not-null assertion]. === Highlighting The cast or not-null assertion. ''' == Comments And Links (visible only on this page) === on 14 Nov 2017, 20:56:16 Ann Campbell wrote: \[~jeanchristophe.collet] "and when property values set at type definition are checked" is not clear to me. Would it be fair to reword to something like: ____ inside conditions that test the object type, either with ``++.kind++`` or ``++instanceof++`` ____ ? endif::env-github,rspecator-view[]