TypeScript/tests/baselines/reference/controlFlowForCatchAndFinally.types
Daniel Rosenwasser 9906092db2
Add flag to change catch variables' default types to unknown (#41013)
* Add test case for 'useUnknownInCatchVariables'.

* Add new 'useUnknownInCatchVariables' flag.

* Accepted baselines.

* Add test for catch variable explicitly typed as 'any'.

* Accepted baselines.

* Move option under 'strict'.

* Accepted baselines.

* 'useUnknownInCatchVariables' is strict in command line help.
2021-06-03 13:12:56 -07:00

143 lines
3.6 KiB
Plaintext

=== tests/cases/compiler/controlFlowForCatchAndFinally.ts ===
type Page = {close(): Promise<void>; content(): Promise<string>};
>Page : Page
>close : () => Promise<void>
>content : () => Promise<string>
type Browser = {close(): Promise<void>};
>Browser : Browser
>close : () => Promise<void>
declare function test1(): Promise<Browser>;
>test1 : () => Promise<Browser>
declare function test2(obj: Browser): Promise<Page>;
>test2 : (obj: Browser) => Promise<Page>
>obj : Browser
async function test(): Promise<string> {
>test : () => Promise<string>
let browser: Browser | undefined = undefined;
>browser : Browser | undefined
>undefined : undefined
let page: Page | undefined = undefined;
>page : Page | undefined
>undefined : undefined
try {
browser = await test1();
>browser = await test1() : Browser
>browser : Browser | undefined
>await test1() : Browser
>test1() : Promise<Browser>
>test1 : () => Promise<Browser>
page = await test2(browser);
>page = await test2(browser) : Page
>page : Page | undefined
>await test2(browser) : Page
>test2(browser) : Promise<Page>
>test2 : (obj: Browser) => Promise<Page>
>browser : Browser
return await page.content();;
>await page.content() : string
>page.content() : Promise<string>
>page.content : () => Promise<string>
>page : Page
>content : () => Promise<string>
} finally {
if (page) {
>page : Page | undefined
await page.close(); // ok
>await page.close() : void
>page.close() : Promise<void>
>page.close : () => Promise<void>
>page : Page
>close : () => Promise<void>
}
if (browser) {
>browser : Browser | undefined
await browser.close(); // ok
>await browser.close() : void
>browser.close() : Promise<void>
>browser.close : () => Promise<void>
>browser : Browser
>close : () => Promise<void>
}
}
}
declare class Aborter { abort(): void };
>Aborter : Aborter
>abort : () => void
class Foo {
>Foo : Foo
abortController: Aborter | undefined = undefined;
>abortController : Aborter | undefined
>undefined : undefined
async operation() {
>operation : () => Promise<void>
if (this.abortController !== undefined) {
>this.abortController !== undefined : boolean
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
this.abortController.abort();
>this.abortController.abort() : void
>this.abortController.abort : () => void
>this.abortController : Aborter
>this : this
>abortController : Aborter
>abort : () => void
this.abortController = undefined;
>this.abortController = undefined : undefined
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
}
try {
this.abortController = new Aborter();
>this.abortController = new Aborter() : Aborter
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>new Aborter() : Aborter
>Aborter : typeof Aborter
} catch (error) {
>error : unknown
if (this.abortController !== undefined) {
>this.abortController !== undefined : boolean
>this.abortController : Aborter | undefined
>this : this
>abortController : Aborter | undefined
>undefined : undefined
this.abortController.abort(); // ok
>this.abortController.abort() : void
>this.abortController.abort : () => void
>this.abortController : Aborter
>this : this
>abortController : Aborter
>abort : () => void
}
}
}
}