3 ms·
here's a full example. If you do this: function test(p: {k: false | 'x' | 'y' | undefined}) { // do stuff } const p = {k: 'x'} // inferred
by phiresky 7y ago
here's a full example. If you do this:
function test(p: {k: false | 'x' | 'y' | undefined}) {
// do stuff
}
const p = {k: 'x'} // inferred type: {k: string}
//...
test(p); // type error : Type 'string' is not assignable to type 'false | "x" | "y" | undefined'
The problem is that the type of p.k is inferred to `string` not `x`. The compiler can't know this is fine because you could call `foo(p)` in between the declaration and the `test` call, that mutates p.k.
If you add `as const` or an explicit type to p it is fine.
(I think this is what the GGP was referring to)
- Dylan16807 7y agoThanks!
- Rapzid 7y agoDidn't realize "as const" worked; will have to try that next time.