TypeScript/tests/baselines/reference/deleteExpressionMustBeOptional_exactOptionalPropertyTypes(exactoptionalpropertytypes=true).types
Daniel Rosenwasser 248b2c3fc1
Further optional delete corrections (#44862)
* Add more tests.

* Accepted baselines.

* Switch to testing the symbol's flags.

* Accepted baselines.
2021-07-01 18:44:22 -07:00

201 lines
2.9 KiB
Plaintext

=== tests/cases/compiler/deleteExpressionMustBeOptional_exactOptionalPropertyTypes.ts ===
interface Foo {
a: number
>a : number
b: number | undefined
>b : number | undefined
c: number | null
>c : number | null
>null : null
d?: number
>d : number | undefined
e: number | undefined | null
>e : number | null | undefined
>null : null
f?: number | undefined | null
>f : number | null | undefined
>null : null
g: unknown
>g : unknown
h: any
>h : any
i: never
>i : never
}
interface AA {
[s: string]: number
>s : string
}
type BB = {
>BB : BB
[P in keyof any]: number
}
declare const f: Foo
>f : Foo
declare const g: Partial<Foo>
>g : Partial<Foo>
declare const a: AA
>a : AA
declare const b: BB
>b : BB
delete f.a
>delete f.a : boolean
>f.a : number
>f : Foo
>a : number
delete f.b
>delete f.b : boolean
>f.b : number | undefined
>f : Foo
>b : number | undefined
delete f.c
>delete f.c : boolean
>f.c : number | null
>f : Foo
>c : number | null
delete f.d
>delete f.d : boolean
>f.d : number | undefined
>f : Foo
>d : number | undefined
delete f.e
>delete f.e : boolean
>f.e : number | null | undefined
>f : Foo
>e : number | null | undefined
delete f.f
>delete f.f : boolean
>f.f : number | null | undefined
>f : Foo
>f : number | null | undefined
delete f.g
>delete f.g : boolean
>f.g : unknown
>f : Foo
>g : unknown
delete f.h
>delete f.h : boolean
>f.h : any
>f : Foo
>h : any
delete f.i
>delete f.i : boolean
>f.i : never
>f : Foo
>i : never
delete f.j
>delete f.j : boolean
>f.j : any
>f : Foo
>j : any
delete g.a
>delete g.a : boolean
>g.a : number | undefined
>g : Partial<Foo>
>a : number | undefined
delete g.b
>delete g.b : boolean
>g.b : number | undefined
>g : Partial<Foo>
>b : number | undefined
delete g.c
>delete g.c : boolean
>g.c : number | null | undefined
>g : Partial<Foo>
>c : number | null | undefined
delete g.d
>delete g.d : boolean
>g.d : number | undefined
>g : Partial<Foo>
>d : number | undefined
delete g.e
>delete g.e : boolean
>g.e : number | null | undefined
>g : Partial<Foo>
>e : number | null | undefined
delete g.f
>delete g.f : boolean
>g.f : number | null | undefined
>g : Partial<Foo>
>f : number | null | undefined
delete g.g
>delete g.g : boolean
>g.g : unknown
>g : Partial<Foo>
>g : unknown
delete g.h
>delete g.h : boolean
>g.h : any
>g : Partial<Foo>
>h : any
delete g.i
>delete g.i : boolean
>g.i : undefined
>g : Partial<Foo>
>i : undefined
delete g.j
>delete g.j : boolean
>g.j : any
>g : Partial<Foo>
>j : any
delete a.a
>delete a.a : boolean
>a.a : number
>a : AA
>a : number
delete a.b
>delete a.b : boolean
>a.b : number
>a : AA
>b : number
delete b.a
>delete b.a : boolean
>b.a : number
>b : BB
>a : number
delete b.b
>delete b.b : boolean
>b.b : number
>b : BB
>b : number